The first syntax looks up the primitive in the user primitive table. primitiveName is an alphanumeric identifier. It is not surrounded by quotation marks. For example:The other two syntaxes look up a user primitive function in a shared library, either by name or by number. The sharedLibrary, functionName, and functionNumber fields have the same syntax and function as those in a PlatformFunction. sharedLibrary must be surrounded by quotes. functionName has no quotes. For example:The user primitive acts the same way whether it is in the user primitive table or in a shared library. If the primitive succeeds, the object returned from the primitive is returned from the method. If the primitive fails, the fail code (the rest of the code in the method) is run. If no fail code is provided, self is returned on primitive failure. The suggested default fail code is ^self primitiveFailed. It generates a walkback describing the reason for the failure.Wherever a vmContext parameter is required when calling a function, pass this value.If the primitive fails, use EsPrimFail(errorCode, argumentNumber). errorCode. is one of the EsPrimErr values defined in Table 39. argumentNumber is the index of the argument in which the error occurred. If the error occurred in the receiver, use EsPrimArgNumSelf. If the error occurred in no particular argument (for example, an EsAllocateObject failed), use EsPrimArgNumNoArg. EsPrimFail returns from the user primitive function.If the primitive succeeds, use EsPrimSucceed(returnObject). returnObject must be an EsObject. EsPrimSucceed returns from the user primitive function.