function PolymorphicScopeInstance (containing_scope, choice_computable) {
  this._choice_scopes = [];
  this._choice_types = [];
  this._choice_computable_indexes = [];
  this._unique_scopes = [];

  this._field_name_references = {};

  this._async_field_names = [];
  this._sync_field_names = [];

  var input_computables = [choice_computable];
  var output_type = new IRCompoundType({ after: new IRDOMPlacementType(), scope: new IRCompoundType({ after: new IRDOMPlacementType() }) });
  ScopeCreator.call(this, containing_scope, input_computables, output_type);
}
/**
 * Represents an single entity or no entity that can be presented as any number of different types of Scopes based on a value given to it.
 *
 * If a value does not match a choice, then the Polymorphic scope will not output anything, but if the value does match a choice it will use the given Scope.
 *
 * If one of the choices has a void output, then all outputs must be void.
 *
 * @constructor
 * @emits Scope#instance_added
 * @extends ScopeCreator
 * @param {Scope} containing_scope The scope that will contain this scope instantiation.
 * @param {Computable} choice_computable The Computable whose output decides the presentation of this PolymorphicScopeInstance.
 */
Represents an single entity or no entity that can be presented as any number of different types of Scopes based on a value given to it.
If a value does not match a choice, then the Polymorphic scope will not output anything, but if the value does match a choice it will use the given Scope.

If one of the choices has a void output, then all outputs must be void.

@constructor
@emits Scope#instance_added
@extends ScopeCreator
@param {Scope} containing_scope The scope that will contain this scope instantiation.
@param {Computable} choice_computable The Computable whose output decides the presentation of this PolymorphicScopeInstance.
Represents an single entity or no entity that can be presented as any number of different types of Scopes based on a value given to it . If a value does not match a choice then the Polymorphic scope will not output anything but if the value does match a choice it will use the given Scope . If one of the choices has a void output then all outputs must be void . @constructor @emits Scope#instance_added @extends ScopeCreator @param { Scope } containing_scope The scope that will contain this scope instantiation . @param { Computable } choice_computable The Computable whose output decides the presentation of this PolymorphicScopeInstance .
function PolymorphicScopeInstance (containing_scope, choice_computable) {
  this._choice_scopes = [];
  this._choice_types = [];
  this._choice_computable_indexes = [];
  this._unique_scopes = [];
  this._field_name_references = {};
  this._async_field_names = [];
  this._sync_field_names = [];
  var input_computables = [choice_computable];
  var output_type = new IRCompoundType({ after: new IRDOMPlacementType(), scope: new IRCompoundType({ after: new IRDOMPlacementType() }) });
  ScopeCreator.call(this, containing_scope, input_computables, output_type);
}
function PolymorphicScopeInstance ( containing_scope , choice_computable ) { this . _choice_scopes = [ ] ; this . _choice_types = [ ] ; this . _choice_computable_indexes = [ ] ; this . _unique_scopes = [ ] ; this . _field_name_references = { } ; this . _async_field_names = [ ] ; this . _sync_field_names = [ ] ; var input_computables = [ choice_computable ] ; var output_type = new IRCompoundType ( { after : new IRDOMPlacementType ( ) , scope : new IRCompoundType ( { after : new IRDOMPlacementType ( ) } ) } ) ; ScopeCreator . call ( this , containing_scope , input_computables , output_type ) ; }
Represents an single entity or no entity that can be presented as any number of different types of Scopes based on a value given to it.
Represents an single entity or no entity that can be presented as any number of different types of Scopes based on a value given to it .