private static void decodeKeyLocator(int expectedType,
				KeyLocator keyLocator, TlvDecoder decoder, bool copy)
        {
            int endOffset = decoder.readNestedTlvsStart(expectedType);

            keyLocator.clear();

            if (decoder.getOffset() == endOffset)
                // The KeyLocator is omitted, so leave the fields as none.
                return;

            if (decoder.peekType(net.named_data.jndn.encoding.tlv.Tlv.Name, endOffset)) {
                // KeyLocator is a Name.
                keyLocator.setType(net.named_data.jndn.KeyLocatorType.KEYNAME);
                decodeName(keyLocator.getKeyName(), new int[1], new int[1],
                        decoder, copy);
            } else if (decoder.peekType(net.named_data.jndn.encoding.tlv.Tlv.KeyLocatorDigest, endOffset)) {
                // KeyLocator is a KeyLocatorDigest.
                keyLocator.setType(net.named_data.jndn.KeyLocatorType.KEY_LOCATOR_DIGEST);
                keyLocator.setKeyData(new Blob(decoder
                        .readBlobTlv(net.named_data.jndn.encoding.tlv.Tlv.KeyLocatorDigest), copy));
            } else
                throw new EncodingException(
                        "decodeKeyLocator: Unrecognized key locator type");

            decoder.finishNestedTlvs(endOffset);
        }