public override object InternalExecute(Program program, object[] arguments) { FrontendDevice device = FrontendDevice.GetFrontendDevice(program); if (arguments[2] is string) { device.SaveDocument(program, (string)arguments[0], (string)arguments[1], (string)arguments[2]); } else { Stream stream = ( arguments[2] is byte[] ? new Scalar(program.ValueManager, program.DataTypes.SystemBinary, arguments[2]) : new Scalar(program.ValueManager, program.DataTypes.SystemBinary, (StreamID)arguments[2]) ).OpenStream(); try { device.SaveBinary(program, (string)arguments[0], (string)arguments[1], stream); } finally { stream.Close(); } } return(null); }