public TypeBinding[] inferElidedTypes(
     ReferenceBinding allocationType,
     ReferenceBinding enclosingType,
     TypeBinding[] argumentTypes,
     final BlockScope scope) {
   /* Given the allocation type and the arguments to the constructor, see if we can synthesize a generic static factory
     method that would, given the argument types and the invocation site, manufacture a parameterized object of type allocationType.
     If we are successful then by design and construction, the parameterization of the return type of the factory method is identical
     to the types elided in the <>.
   */
   MethodBinding factory =
       scope.getStaticFactory(allocationType, enclosingType, argumentTypes, this);
   if (factory instanceof ParameterizedGenericMethodBinding && factory.isValidBinding()) {
     ParameterizedGenericMethodBinding genericFactory =
         (ParameterizedGenericMethodBinding) factory;
     this.inferredReturnType = genericFactory.inferredReturnType;
     return ((ParameterizedTypeBinding) factory.returnType).arguments;
   }
   return null;
 }