Move model dependent code out of ClassDefinitionBuilder and into ClassTransformer (its only caller).
Issue #1200: ClassTransformer.transformMethodDeclFlags() relax parameter type, because we want to reuse the same logic to figure out the modifiers for method generated for FunctionalParameters.
Issue #1200: Add Strategy.createMethod() to determine when we need a method for a FunctionalParameter.
Issue #1200: Naming.makeName() needs to support FunctionalParameters.
Issue #1200: Util.isUnboxedVoid() needs to understand void functional parameters.
Issue #1200: Fix .src due to changed understanding of void functional parameters
Issue #1200: ClassTransformer: Some very basic support for generating a method around shared functional parameters
Issue #1200: Add some tests
Issue #1200: Invocation: When invoking a FunctionalParameter only call $call() directly when the parameter is not a class member (when it *is* a class member there will be a real method we can invoke directly)
Issue #1200: BoxingDeclarationVisitor: FunctionalParameters that are class members are not unilaterally boxed, because we generate a method wrapping the callable.
Issue #1200: ClassTransformer: Change conditions on when we generate a field/getter for a ValueParameter
and factor out a method for making and initializing the field which holds the
Callable.
Issue #1200: ClassTransformer: Generate a field for functional parameters.
Issue #1200: ClassTransformer: Rename initParam() -> makeAttributeForValueParameter(), mirroring makeMethodForFunctionalParameter(), and push the if for the functional parameter inside makeMethodForFunctionalParameter().
Issue #1200: Revise .src for change transformation of functional parameters.
Issue #1200: Boxing for refs to FunctionalParameter members.
Issue #1200: Method references for methods declared via a FunctionalParameter to the class. When we're 'inside' the class we can reference the field directly, to avoid genarating another anonymous AbstractCallable, when we're outside we have to generate an AbstractCallable.
Issue #1200: Push the method application inside DefaultValueMethodTransformation.makeDefaultValueMethod(), so that I can hack around the fact that FunctionalParameters dont have default parameter methods for their sequenced parameters.
Issue #1200: CodegenUtil.getTopmostRefinedDeclaration() needs to understand about functional parameters.
Issue #1200: ClassTransformer.makeMethodForFunctionalParameter(): Fixup boxing of parameters and return types when invoking the callable in the method wrapping a functional parameter.
Issue #1200: BoxingDeclarationVisitor: Make it handle the parameters of functional parameters, taking into account that the functional parameter could be actual.