code: def from_xdr_object(cls, op_xdr_object):
          
          if not op_xdr_object.sourceAccount:
              source = None
          else:
              source = encode_check(
                  'account', op_xdr_object.sourceAccount[0].ed25519).decode()
          trustor = encode_check(
              'account',
              op_xdr_object.body.allowTrustOp.trustor.ed25519).decode()
          authorize = op_xdr_object.body.allowTrustOp.authorize
  
          asset_type = op_xdr_object.body.allowTrustOp.asset.type
          if asset_type == Xdr.const.ASSET_TYPE_CREDIT_ALPHANUM4:
              asset_code = (
                  op_xdr_object.body.allowTrustOp.asset.assetCode4.decode())
          elif asset_type == Xdr.const.ASSET_TYPE_CREDIT_ALPHANUM12:
              asset_code = (
                  op_xdr_object.body.allowTrustOp.asset.assetCode12.decode())
          else:
              raise NotImplementedError(
                  "Operation of asset_type={} is not implemented"
                  ".".format(asset_type.type))
  
          return cls(
              source=source,
              trustor=trustor,
              authorize=authorize,
              asset_code=asset_code)
docs: Creates a :class:`AllowTrust` object from an XDR Operation
          object.