Object (Class[] argumentTypes, Object[] arguments) { classOnly = false; if (argumentTypes == null || arguments == null || argumentTypes.length != arguments.length) { throw new IllegalArgumentException("Arguments must be non-null and of equal length"); } synchronized (this) { this.argumentTypes = argumentTypes; this.arguments = arguments; try { return createHelper(); } finally { this.arguments = null; } } }