private void implementInvoke() {
   BlockExpression block = getBlock();
   IParsedElement body = block.getBody();
   DynamicFunctionSymbol value;
   if (body instanceof Expression) {
     Expression expression = (Expression) body;
     ReturnStatement syntheticReturnStatement = new ReturnStatement();
     syntheticReturnStatement.setValue(expression);
     syntheticReturnStatement.initLocation(
         expression.getLocation().getOffset(),
         expression.getLocation().getLength(),
         expression.getLineNum(),
         expression.getColumn(),
         expression.getLocation().getScriptPartId());
     value =
         new DynamicFunctionSymbol(
             null,
             INVOKE_METHOD_NAME,
             convertToObjectSignature(block),
             convertToObjectSymbols(block),
             syntheticReturnStatement);
   } else {
     value =
         new DynamicFunctionSymbol(
             null,
             INVOKE_METHOD_NAME,
             convertToObjectSignature(block),
             convertToObjectSymbols(block),
             (IStatement) body);
   }
   value.setClassMember(true);
   value.setPublic(true);
   value.setFinal(true);
   getParseInfo().addMemberFunction(value);
 }
 @Override
 public IConstructorInfo getConstructorInfo() {
   return (IConstructorInfo) _dfsDelegate.getMethodOrConstructorInfo();
 }
 public MethodCallStatement getInitializer() {
   return _dfsDelegate.getInitializer();
 }