>>>
class Foo {
  void init(String entityType) {
    _schemaUtils
        .computeSchema(entityType, _schemaContext,
            new Context.fromParent(_schemaContext.Context)
      ..setPropertyValue('entityType', entityType))
        .then((ComputedSchema computedSchema) {
      //
    });
  }
}
<<<
class Foo {
  void init(String entityType) {
    _schemaUtils
        .computeSchema(
            entityType,
            _schemaContext,
            new Context.fromParent(_schemaContext.Context)
              ..setPropertyValue('entityType', entityType))
        .then((ComputedSchema computedSchema) {
      //
    });
  }
}