public static CstCallSite make(
      CstMethodHandle bootstrapHandle, CstNat nat, BootstrapMethodArgumentsList optionalArguments) {
    if (bootstrapHandle == null) {
      throw new NullPointerException("bootstrapMethodHandle == null");
    } else if (nat == null) {
      throw new NullPointerException("nat == null");
    }

    List list = new List(3 + optionalArguments.size());
    list.set(0, bootstrapHandle);
    list.set(1, nat.getName());
    list.set(2, new CstProtoRef(Prototype.fromDescriptor(nat.getDescriptor().getString())));
    if (optionalArguments != null) {
      for (int i = 0; i < optionalArguments.size(); ++i) {
        list.set(i + 3, optionalArguments.get(i));
      }
    }
    list.setImmutable();
    return new CstCallSite(list);
  }
Creates an instance of a {@code CstCallSite}.

@param bootstrapHandle {@code non-null;} the boot method handle to invoke
@param nat {@code non-null;} the name and type to be resolved by the boot method handle
@param optionalArguments {@code null-ok;} optional arguments to provide to the boot method
@return a new {@code CstCallSite} instance
android/android_framework/dex-maker/src/main/java/com/android/dx/rop/cst/CstCallSite.java