code: func NewSNativeContract(comment, name string,
  	functions ...*SNativeFunctionDescription) *SNativeContractDescription {
  
  	functionsByID := make(map[abi.FunctionID]*SNativeFunctionDescription, len(functions))
  	for _, f := range functions {
  
  		f.Abi = *abi.SpecFromStructReflect(f.Name, f.Arguments, f.Returns)
  		fid := f.Abi.FunctionID
  		otherF, ok := functionsByID[fid]
  		if ok {
  			panic(fmt.Errorf("function with ID %x already defined: %s", fid, otherF.Signature()))
  		}
  		functionsByID[fid] = f
  	}
  	return &SNativeContractDescription{
  		Comment:       comment,
  		Name:          name,
  		functionsByID: functionsByID,
  		functions:     functions,
  	}
  }
docs: // Create a new SNative contract description object by passing a comment, name
  // and a list of member functions descriptions