prowide/prowide-core

View on GitHub
src/generated/java/com/prowidesoftware/swift/model/mt/mt3xx/MT340.java

Summary

Maintainability
F
1 wk
Test Coverage
/*
 * Copyright 2006-2023 Prowide
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.prowidesoftware.swift.model.mt.mt3xx;



import com.prowidesoftware.Generated;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;

import org.apache.commons.lang3.StringUtils;

import com.prowidesoftware.swift.model.*;
import com.prowidesoftware.swift.internal.*;
import com.prowidesoftware.swift.internal.SequenceStyle.Type;
import com.prowidesoftware.swift.model.field.*;
import com.prowidesoftware.swift.model.mt.AbstractMT;
import com.prowidesoftware.swift.utils.Lib;
import java.io.File;
import java.io.InputStream;
import java.io.IOException;

/**
 * MT 340 - Forward Rate Agreement Confirmation.
 *
 * <p>
 * SWIFT MT340 (ISO 15022) message structure:
 *
 <div class="scheme"><ul>
<li class="sequence">
Sequence A (M)<ul><li class="field">Field 15 A (M)</li>
<li class="field">Field 20  (M)</li>
<li class="field">Field 21  (O)</li>
<li class="field">Field 22 A (M)</li>
<li class="field">Field 94 A (O)</li>
<li class="field">Field 22 C (M)</li>
<li class="field">Field 23 D (M)</li>
<li class="field">Field 21 N (O)</li>
<li class="field">Field 21 B (O)</li>
<li class="field">Field 82 A,D (M)</li>
<li class="field">Field 87 A,D (M)</li>
<li class="field">Field 77 H (M)</li>
<li class="field">Field 14 C (O)</li>
</ul></li>
<li class="sequence">
Sequence B (M)<ul><li class="field">Field 15 B (M)</li>
<li class="field">Field 30 T (M)</li>
<li class="field">Field 32 B (M)</li>
<li class="field">Field 30 F (M)</li>
<li class="field">Field 30 P (M)</li>
<li class="field">Field 37 M (M)</li>
<li class="field">Field 14 F (M)</li>
<li class="sequence">
Sequence B1 (O)<ul><li class="field">Field 30 V (M)</li>
<li class="field">Field 38 D (M)</li>
</ul></li>
<li class="sequence">
Sequence B2 (M)<ul><li class="field">Field 38 G (M)</li>
<li class="field">Field 14 D (M)</li>
<li class="field">Field 17 F (M)</li>
<li class="field">Field 18 A (M)</li>
<li class="field">Field 22 B (M) (repetitive)</li>
</ul></li>
<li class="field">Field 39 M (O)</li>
</ul></li>
<li class="sequence">
Sequence C (M)<ul><li class="field">Field 15 C (M)</li>
<li class="field">Field 53 A,D,J (O)</li>
<li class="field">Field 86 A,D,J (O)</li>
<li class="field">Field 56 A,D,J (O)</li>
<li class="field">Field 57 A,D,J (M)</li>
<li class="field">Field 58 A,D,J (O)</li>
</ul></li>
<li class="sequence">
Sequence D (M)<ul><li class="field">Field 15 D (M)</li>
<li class="field">Field 53 A,D,J (O)</li>
<li class="field">Field 86 A,D,J (O)</li>
<li class="field">Field 56 A,D,J (O)</li>
<li class="field">Field 57 A,D,J (M)</li>
<li class="field">Field 58 A,D,J (O)</li>
</ul></li>
<li class="sequence">
Sequence E (O)<ul><li class="field">Field 15 E (M)</li>
<li class="field">Field 29 A (O)</li>
<li class="field">Field 24 D (O)</li>
<li class="field">Field 88 A,D (O)</li>
<li class="field">Field 71 F (O)</li>
<li class="field">Field 21 G (O)</li>
<li class="field">Field 72  (O)</li>
</ul></li>
<li class="sequence">
Sequence F (O)<ul><li class="field">Field 15 F (M)</li>
<li class="field">Field 18 A (M)</li>
<li class="sequence">
Sequence _F1 (M) (repetitive)<ul><li class="field">Field 30 F (M)</li>
<li class="field">Field 32 H (M)</li>
</ul></li>
<li class="field">Field 53 A,D,J (O)</li>
<li class="field">Field 86 A,D,J (O)</li>
<li class="field">Field 56 A,D,J (O)</li>
<li class="field">Field 57 A,D,J (M)</li>
</ul></li>
<li class="sequence">
Sequence G (O)<ul><li class="field">Field 15 G (M)</li>
<li class="sequence">
Sequence G1 (O) (repetitive)<ul><li class="field">Field 22 L (M)</li>
<li class="field">Field 91 A,D,J (O)</li>
<li class="sequence">
Sequence G1a (O) (repetitive)<ul><li class="field">Field 22 M (M)</li>
<li class="field">Field 22 N (M)</li>
<li class="sequence">
Sequence G1a1 (O) (repetitive)<ul><li class="field">Field 22 P (M)</li>
<li class="field">Field 22 R (M)</li>
</ul></li>
</ul></li>
</ul></li>
<li class="field">Field 96 A,D,J (O)</li>
<li class="field">Field 22 S (O) (repetitive)</li>
<li class="field">Field 22 T (O)</li>
<li class="field">Field 17 E (O)</li>
<li class="field">Field 22 U (O)</li>
<li class="field">Field 35 B (O)</li>
<li class="field">Field 17 H (O)</li>
<li class="field">Field 17 P (O)</li>
<li class="field">Field 22 V (O)</li>
<li class="field">Field 98 D (O)</li>
<li class="field">Field 17 W (O)</li>
<li class="field">Field 17 Y (O)</li>
<li class="field">Field 17 Z (O)</li>
<li class="field">Field 22 Q (O)</li>
<li class="field">Field 17 L (O)</li>
<li class="field">Field 17 M (O)</li>
<li class="field">Field 17 Q (O)</li>
<li class="field">Field 17 S (O)</li>
<li class="field">Field 17 X (O)</li>
<li class="field">Field 34 C (O)</li>
<li class="field">Field 77 A (O)</li>
</ul></li>
</ul></div>

 *
 * <p>
 * This source code is specific to release <strong>SRU 2023</strong>
 * <p>
 * For additional resources check <a href="https://www.prowidesoftware.com/resources">https://www.prowidesoftware.com/resources</a>
 */
@Generated
public class MT340 extends AbstractMT implements Serializable {
    /**
     * Constant identifying the SRU to which this class belongs to.
     */
    public static final int SRU = 2023;
    private static final long serialVersionUID = 1L;
    private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(MT340.class.getName());
    
    /**
     * Constant for MT name, this is part of the classname, after MT.
     */
    public static final String NAME = "340";

    /**
     * Creates an MT340 initialized with the parameter SwiftMessage.
     * @param m swift message with the MT340 content
     */
    public MT340(final SwiftMessage m) {
        super(m);
        sanityCheck(m);
    }

    /**
     * Creates an MT340 initialized with the parameter MtSwiftMessage.
     * @param m swift message with the MT340 content, the parameter can not be null
     * @see #MT340(String)
     */
    public MT340(final MtSwiftMessage m) {
        this(m.message());
    }
    
    /**
     * Creates an MT340 initialized with the parameter MtSwiftMessage.
     *
     * @param m swift message with the MT340 content
     * @return the created object or null if the parameter is null
     * @see #MT340(String)
     * @since 7.7
     */
    public static MT340 parse(final MtSwiftMessage m) {
        if (m == null) {
            return null;
        }
        return new MT340(m);
    }
    
    /**
     * Creates and initializes a new MT340 input message setting TEST BICS as sender and receiver.
     * All mandatory header attributes are completed with default values.
     *
     * @since 7.6
     */
    public MT340() {
        this(BIC.TEST8, BIC.TEST8);
    }
    
    /**
     * Creates and initializes a new MT340 input message from sender to receiver.
     * All mandatory header attributes are completed with default values. 
     * In particular the sender and receiver addresses will be filled with proper default LT identifier 
     * and branch codes if not provided,
     * 
     * @param sender the sender address as a bic8, bic11 or full logical terminal consisting of 12 characters
     * @param receiver the receiver address as a bic8, bic11 or full logical terminal consisting of 12 characters
     * @since 7.7
     */
    public MT340(final String sender, final String receiver) {
        super(340, sender, receiver);
    }
    
    /**
     * Creates a new MT340 by parsing a String with the message content in its swift FIN format.
     * If the fin parameter is null or the message cannot be parsed, the internal message object
     * will be initialized (blocks will be created) but empty.
     * If the string contains multiple messages, only the first one will be parsed.
     *
     * @param fin a string with the MT message in its FIN swift format
     * @since 7.7
     */
    public MT340(final String fin) {
        super();
        if (fin != null) {
            final SwiftMessage parsed = read(fin);
            if (parsed != null) {
                super.m = parsed;
                sanityCheck(parsed);
            }
        }
    }
    
    private void sanityCheck(final SwiftMessage param) {
        if (param.isServiceMessage()) {
            log.warning("Creating an MT340 object from FIN content with a Service Message. Check if the MT340 you are intended to read is prepended with and ACK.");
        } else if (!StringUtils.equals(param.getType(), "340")) {
            log.warning("Creating an MT340 object from FIN content with message type "+param.getType());
        }
    }
    
    /**
     * Creates a new MT340 by parsing a String with the message content in its swift FIN format.
     * If the fin parameter cannot be parsed, the returned MT340 will have its internal message object
     * initialized (blocks will be created) but empty.
     * If the string contains multiple messages, only the first one will be parsed. 
     *
     * @param fin a string with the MT message in its FIN swift format. <em>fin may be null in which case this method returns null</em>
     * @return a new instance of MT340 or null if fin is null 
     * @since 7.7
     */
    public static MT340 parse(final String fin) {
        if (fin == null) {
            return null;
        }
        return new MT340(fin);
    }
    
    /**
     * Creates a new MT340 by parsing a input stream with the message content in its swift FIN format, using "UTF-8" as encoding.
     * If the message content is null or cannot be parsed, the internal message object
     * will be initialized (blocks will be created) but empty.
     * If the stream contains multiple messages, only the first one will be parsed.
     *
     * @param stream an input stream in UTF-8 encoding with the MT message in its FIN swift format.
     * @throws IOException if the stream data cannot be read
     * @since 7.7
     */
    public MT340(final InputStream stream) throws IOException {
        this(Lib.readStream(stream));
    }
    
    /**
     * Creates a new MT340 by parsing a input stream with the message content in its swift FIN format, using "UTF-8" as encoding.
     * If the stream contains multiple messages, only the first one will be parsed.
     *
     * @param stream an input stream in UTF-8 encoding with the MT message in its FIN swift format.
     * @return a new instance of MT340 or null if stream is null or the message cannot be parsed 
     * @throws IOException if the stream data cannot be read
     * @since 7.7
     */
    public static MT340 parse(final InputStream stream) throws IOException {
        if (stream == null) {
            return null;
        }
        return new MT340(stream);
    }
    
    /**
     * Creates a new MT340 by parsing a file with the message content in its swift FIN format.
     * If the file content is null or cannot be parsed as a message, the internal message object
     * will be initialized (blocks will be created) but empty.
     * If the file contains multiple messages, only the first one will be parsed.
     *
     * @param file a file with the MT message in its FIN swift format.
     * @throws IOException if the file content cannot be read
     * @since 7.7
     */
    public MT340(final File file) throws IOException {
        this(Lib.readFile(file));
    }
    
    /**
     * Creates a new MT340 by parsing a file with the message content in its swift FIN format.
     * If the file contains multiple messages, only the first one will be parsed.
     *
     * @param file a file with the MT message in its FIN swift format.
     * @return a new instance of MT340 or null if; file is null, does not exist, can't be read, is not a file or the message cannot be parsed
     * @throws IOException if the file content cannot be read
     * @since 7.7
     */
    public static MT340 parse(final File file) throws IOException {
        if (file == null) {
            return null;
        }
        return new MT340(file);
    }
    
    /**
     * Returns this MT number.
     * @return the message type number of this MT
     * @since 6.4
     */
    @Override
    public String getMessageType() {
        return "340";
    }

    /**
     * Add all tags from block to the end of the block4.
     *
     * @param block to append
     * @return this object to allow method chaining
     * @since 7.6
     */
    @Override
    public MT340 append(final SwiftTagListBlock block) {
        super.append(block);
        return this;
    }
    
    /**
     * Add all tags to the end of the block4.
     *
     * @param tags to append
     * @return this object to allow method chaining
     * @since 7.6
     */
    @Override
    public MT340 append(final Tag... tags) {
        super.append(tags);
        return this;
    }
    
    /**
     * Add all the fields to the end of the block4.
     *
     * @param fields to append
     * @return this object to allow method chaining
     * @since 7.6
     */
    @Override
    public MT340 append(final Field... fields) {
        super.append(fields);
        return this;
    }

   /**
    * Creates an MT340 messages from its JSON representation.
    * <p>
    * For generic conversion of JSON into the corresponding MT instance
    * see {@link AbstractMT#fromJson(String)}
    *
    * @param json a JSON representation of an MT340 message
    * @return a new instance of MT340
    * @since 7.10.3
    */
    public static MT340 fromJson(final String json) {
        return (MT340) AbstractMT.fromJson(json);
    }

    /**
     * Iterates through block4 fields and return the first one whose name matches 15A, 
     * or null if none is found.
     * The first occurrence of field 15A at MT340 is expected to be the only one.
     * 
     * @return a Field15A object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field15A getField15A() {
        final Tag t = tag("15A");
        if (t != null) {
            return new Field15A(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 20, 
     * or null if none is found.
     * The first occurrence of field 20 at MT340 is expected to be the only one.
     * 
     * @return a Field20 object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field20 getField20() {
        final Tag t = tag("20");
        if (t != null) {
            return new Field20(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 21, 
     * or null if none is found.
     * The first occurrence of field 21 at MT340 is expected to be the only one.
     * 
     * @return a Field21 object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field21 getField21() {
        final Tag t = tag("21");
        if (t != null) {
            return new Field21(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 22A, 
     * or null if none is found.
     * The first occurrence of field 22A at MT340 is expected to be the only one.
     * 
     * @return a Field22A object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field22A getField22A() {
        final Tag t = tag("22A");
        if (t != null) {
            return new Field22A(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 94A, 
     * or null if none is found.
     * The first occurrence of field 94A at MT340 is expected to be the only one.
     * 
     * @return a Field94A object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field94A getField94A() {
        final Tag t = tag("94A");
        if (t != null) {
            return new Field94A(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 22C, 
     * or null if none is found.
     * The first occurrence of field 22C at MT340 is expected to be the only one.
     * 
     * @return a Field22C object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field22C getField22C() {
        final Tag t = tag("22C");
        if (t != null) {
            return new Field22C(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 23D, 
     * or null if none is found.
     * The first occurrence of field 23D at MT340 is expected to be the only one.
     * 
     * @return a Field23D object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field23D getField23D() {
        final Tag t = tag("23D");
        if (t != null) {
            return new Field23D(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 21N, 
     * or null if none is found.
     * The first occurrence of field 21N at MT340 is expected to be the only one.
     * 
     * @return a Field21N object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field21N getField21N() {
        final Tag t = tag("21N");
        if (t != null) {
            return new Field21N(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 21B, 
     * or null if none is found.
     * The first occurrence of field 21B at MT340 is expected to be the only one.
     * 
     * @return a Field21B object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field21B getField21B() {
        final Tag t = tag("21B");
        if (t != null) {
            return new Field21B(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 82A, 
     * or null if none is found.
     * The first occurrence of field 82A at MT340 is expected to be the only one.
     * 
     * @return a Field82A object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field82A getField82A() {
        final Tag t = tag("82A");
        if (t != null) {
            return new Field82A(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 82D, 
     * or null if none is found.
     * The first occurrence of field 82D at MT340 is expected to be the only one.
     * 
     * @return a Field82D object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field82D getField82D() {
        final Tag t = tag("82D");
        if (t != null) {
            return new Field82D(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 87A, 
     * or null if none is found.
     * The first occurrence of field 87A at MT340 is expected to be the only one.
     * 
     * @return a Field87A object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field87A getField87A() {
        final Tag t = tag("87A");
        if (t != null) {
            return new Field87A(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 87D, 
     * or null if none is found.
     * The first occurrence of field 87D at MT340 is expected to be the only one.
     * 
     * @return a Field87D object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field87D getField87D() {
        final Tag t = tag("87D");
        if (t != null) {
            return new Field87D(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 77H, 
     * or null if none is found.
     * The first occurrence of field 77H at MT340 is expected to be the only one.
     * 
     * @return a Field77H object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field77H getField77H() {
        final Tag t = tag("77H");
        if (t != null) {
            return new Field77H(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 14C, 
     * or null if none is found.
     * The first occurrence of field 14C at MT340 is expected to be the only one.
     * 
     * @return a Field14C object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field14C getField14C() {
        final Tag t = tag("14C");
        if (t != null) {
            return new Field14C(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 15B, 
     * or null if none is found.
     * The first occurrence of field 15B at MT340 is expected to be the only one.
     * 
     * @return a Field15B object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field15B getField15B() {
        final Tag t = tag("15B");
        if (t != null) {
            return new Field15B(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 30T, 
     * or null if none is found.
     * The first occurrence of field 30T at MT340 is expected to be the only one.
     * 
     * @return a Field30T object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field30T getField30T() {
        final Tag t = tag("30T");
        if (t != null) {
            return new Field30T(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 32B, 
     * or null if none is found.
     * The first occurrence of field 32B at MT340 is expected to be the only one.
     * 
     * @return a Field32B object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field32B getField32B() {
        final Tag t = tag("32B");
        if (t != null) {
            return new Field32B(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 30P, 
     * or null if none is found.
     * The first occurrence of field 30P at MT340 is expected to be the only one.
     * 
     * @return a Field30P object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field30P getField30P() {
        final Tag t = tag("30P");
        if (t != null) {
            return new Field30P(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 37M, 
     * or null if none is found.
     * The first occurrence of field 37M at MT340 is expected to be the only one.
     * 
     * @return a Field37M object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field37M getField37M() {
        final Tag t = tag("37M");
        if (t != null) {
            return new Field37M(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 14F, 
     * or null if none is found.
     * The first occurrence of field 14F at MT340 is expected to be the only one.
     * 
     * @return a Field14F object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field14F getField14F() {
        final Tag t = tag("14F");
        if (t != null) {
            return new Field14F(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 30V, 
     * or null if none is found.
     * The first occurrence of field 30V at MT340 is expected to be the only one.
     * 
     * @return a Field30V object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field30V getField30V() {
        final Tag t = tag("30V");
        if (t != null) {
            return new Field30V(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 38D, 
     * or null if none is found.
     * The first occurrence of field 38D at MT340 is expected to be the only one.
     * 
     * @return a Field38D object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field38D getField38D() {
        final Tag t = tag("38D");
        if (t != null) {
            return new Field38D(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 38G, 
     * or null if none is found.
     * The first occurrence of field 38G at MT340 is expected to be the only one.
     * 
     * @return a Field38G object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field38G getField38G() {
        final Tag t = tag("38G");
        if (t != null) {
            return new Field38G(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 14D, 
     * or null if none is found.
     * The first occurrence of field 14D at MT340 is expected to be the only one.
     * 
     * @return a Field14D object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field14D getField14D() {
        final Tag t = tag("14D");
        if (t != null) {
            return new Field14D(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17F, 
     * or null if none is found.
     * The first occurrence of field 17F at MT340 is expected to be the only one.
     * 
     * @return a Field17F object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17F getField17F() {
        final Tag t = tag("17F");
        if (t != null) {
            return new Field17F(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 39M, 
     * or null if none is found.
     * The first occurrence of field 39M at MT340 is expected to be the only one.
     * 
     * @return a Field39M object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field39M getField39M() {
        final Tag t = tag("39M");
        if (t != null) {
            return new Field39M(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 15C, 
     * or null if none is found.
     * The first occurrence of field 15C at MT340 is expected to be the only one.
     * 
     * @return a Field15C object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field15C getField15C() {
        final Tag t = tag("15C");
        if (t != null) {
            return new Field15C(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 15D, 
     * or null if none is found.
     * The first occurrence of field 15D at MT340 is expected to be the only one.
     * 
     * @return a Field15D object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field15D getField15D() {
        final Tag t = tag("15D");
        if (t != null) {
            return new Field15D(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 15E, 
     * or null if none is found.
     * The first occurrence of field 15E at MT340 is expected to be the only one.
     * 
     * @return a Field15E object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field15E getField15E() {
        final Tag t = tag("15E");
        if (t != null) {
            return new Field15E(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 29A, 
     * or null if none is found.
     * The first occurrence of field 29A at MT340 is expected to be the only one.
     * 
     * @return a Field29A object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field29A getField29A() {
        final Tag t = tag("29A");
        if (t != null) {
            return new Field29A(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 24D, 
     * or null if none is found.
     * The first occurrence of field 24D at MT340 is expected to be the only one.
     * 
     * @return a Field24D object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field24D getField24D() {
        final Tag t = tag("24D");
        if (t != null) {
            return new Field24D(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 88A, 
     * or null if none is found.
     * The first occurrence of field 88A at MT340 is expected to be the only one.
     * 
     * @return a Field88A object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field88A getField88A() {
        final Tag t = tag("88A");
        if (t != null) {
            return new Field88A(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 88D, 
     * or null if none is found.
     * The first occurrence of field 88D at MT340 is expected to be the only one.
     * 
     * @return a Field88D object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field88D getField88D() {
        final Tag t = tag("88D");
        if (t != null) {
            return new Field88D(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 71F, 
     * or null if none is found.
     * The first occurrence of field 71F at MT340 is expected to be the only one.
     * 
     * @return a Field71F object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field71F getField71F() {
        final Tag t = tag("71F");
        if (t != null) {
            return new Field71F(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 21G, 
     * or null if none is found.
     * The first occurrence of field 21G at MT340 is expected to be the only one.
     * 
     * @return a Field21G object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field21G getField21G() {
        final Tag t = tag("21G");
        if (t != null) {
            return new Field21G(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 72, 
     * or null if none is found.
     * The first occurrence of field 72 at MT340 is expected to be the only one.
     * 
     * @return a Field72 object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field72 getField72() {
        final Tag t = tag("72");
        if (t != null) {
            return new Field72(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 15F, 
     * or null if none is found.
     * The first occurrence of field 15F at MT340 is expected to be the only one.
     * 
     * @return a Field15F object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field15F getField15F() {
        final Tag t = tag("15F");
        if (t != null) {
            return new Field15F(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 15G, 
     * or null if none is found.
     * The first occurrence of field 15G at MT340 is expected to be the only one.
     * 
     * @return a Field15G object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field15G getField15G() {
        final Tag t = tag("15G");
        if (t != null) {
            return new Field15G(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 96A, 
     * or null if none is found.
     * The first occurrence of field 96A at MT340 is expected to be the only one.
     * 
     * @return a Field96A object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field96A getField96A() {
        final Tag t = tag("96A");
        if (t != null) {
            return new Field96A(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 96D, 
     * or null if none is found.
     * The first occurrence of field 96D at MT340 is expected to be the only one.
     * 
     * @return a Field96D object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field96D getField96D() {
        final Tag t = tag("96D");
        if (t != null) {
            return new Field96D(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 96J, 
     * or null if none is found.
     * The first occurrence of field 96J at MT340 is expected to be the only one.
     * 
     * @return a Field96J object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field96J getField96J() {
        final Tag t = tag("96J");
        if (t != null) {
            return new Field96J(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 22T, 
     * or null if none is found.
     * The first occurrence of field 22T at MT340 is expected to be the only one.
     * 
     * @return a Field22T object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field22T getField22T() {
        final Tag t = tag("22T");
        if (t != null) {
            return new Field22T(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17E, 
     * or null if none is found.
     * The first occurrence of field 17E at MT340 is expected to be the only one.
     * 
     * @return a Field17E object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17E getField17E() {
        final Tag t = tag("17E");
        if (t != null) {
            return new Field17E(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 22U, 
     * or null if none is found.
     * The first occurrence of field 22U at MT340 is expected to be the only one.
     * 
     * @return a Field22U object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field22U getField22U() {
        final Tag t = tag("22U");
        if (t != null) {
            return new Field22U(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 35B, 
     * or null if none is found.
     * The first occurrence of field 35B at MT340 is expected to be the only one.
     * 
     * @return a Field35B object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field35B getField35B() {
        final Tag t = tag("35B");
        if (t != null) {
            return new Field35B(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17H, 
     * or null if none is found.
     * The first occurrence of field 17H at MT340 is expected to be the only one.
     * 
     * @return a Field17H object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17H getField17H() {
        final Tag t = tag("17H");
        if (t != null) {
            return new Field17H(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17P, 
     * or null if none is found.
     * The first occurrence of field 17P at MT340 is expected to be the only one.
     * 
     * @return a Field17P object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17P getField17P() {
        final Tag t = tag("17P");
        if (t != null) {
            return new Field17P(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 22V, 
     * or null if none is found.
     * The first occurrence of field 22V at MT340 is expected to be the only one.
     * 
     * @return a Field22V object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field22V getField22V() {
        final Tag t = tag("22V");
        if (t != null) {
            return new Field22V(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 98D, 
     * or null if none is found.
     * The first occurrence of field 98D at MT340 is expected to be the only one.
     * 
     * @return a Field98D object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field98D getField98D() {
        final Tag t = tag("98D");
        if (t != null) {
            return new Field98D(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17W, 
     * or null if none is found.
     * The first occurrence of field 17W at MT340 is expected to be the only one.
     * 
     * @return a Field17W object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17W getField17W() {
        final Tag t = tag("17W");
        if (t != null) {
            return new Field17W(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17Y, 
     * or null if none is found.
     * The first occurrence of field 17Y at MT340 is expected to be the only one.
     * 
     * @return a Field17Y object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17Y getField17Y() {
        final Tag t = tag("17Y");
        if (t != null) {
            return new Field17Y(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17Z, 
     * or null if none is found.
     * The first occurrence of field 17Z at MT340 is expected to be the only one.
     * 
     * @return a Field17Z object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17Z getField17Z() {
        final Tag t = tag("17Z");
        if (t != null) {
            return new Field17Z(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 22Q, 
     * or null if none is found.
     * The first occurrence of field 22Q at MT340 is expected to be the only one.
     * 
     * @return a Field22Q object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field22Q getField22Q() {
        final Tag t = tag("22Q");
        if (t != null) {
            return new Field22Q(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17L, 
     * or null if none is found.
     * The first occurrence of field 17L at MT340 is expected to be the only one.
     * 
     * @return a Field17L object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17L getField17L() {
        final Tag t = tag("17L");
        if (t != null) {
            return new Field17L(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17M, 
     * or null if none is found.
     * The first occurrence of field 17M at MT340 is expected to be the only one.
     * 
     * @return a Field17M object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17M getField17M() {
        final Tag t = tag("17M");
        if (t != null) {
            return new Field17M(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17Q, 
     * or null if none is found.
     * The first occurrence of field 17Q at MT340 is expected to be the only one.
     * 
     * @return a Field17Q object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17Q getField17Q() {
        final Tag t = tag("17Q");
        if (t != null) {
            return new Field17Q(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17S, 
     * or null if none is found.
     * The first occurrence of field 17S at MT340 is expected to be the only one.
     * 
     * @return a Field17S object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17S getField17S() {
        final Tag t = tag("17S");
        if (t != null) {
            return new Field17S(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 17X, 
     * or null if none is found.
     * The first occurrence of field 17X at MT340 is expected to be the only one.
     * 
     * @return a Field17X object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field17X getField17X() {
        final Tag t = tag("17X");
        if (t != null) {
            return new Field17X(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 34C, 
     * or null if none is found.
     * The first occurrence of field 34C at MT340 is expected to be the only one.
     * 
     * @return a Field34C object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field34C getField34C() {
        final Tag t = tag("34C");
        if (t != null) {
            return new Field34C(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return the first one whose name matches 77A, 
     * or null if none is found.
     * The first occurrence of field 77A at MT340 is expected to be the only one.
     * 
     * @return a Field77A object or null if the field is not found
     * @see SwiftTagListBlock#getTagByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public Field77A getField77A() {
        final Tag t = tag("77A");
        if (t != null) {
            return new Field77A(t.getValue());
        } else {
            return null;
        }
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 22B, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 22B at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field22B objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field22B> getField22B() {
        final List<Field22B> result = new ArrayList<>();
        final Tag[] tags = tags("22B");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field22B(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 53A, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 53A at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field53A objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field53A> getField53A() {
        final List<Field53A> result = new ArrayList<>();
        final Tag[] tags = tags("53A");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field53A(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 53D, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 53D at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field53D objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field53D> getField53D() {
        final List<Field53D> result = new ArrayList<>();
        final Tag[] tags = tags("53D");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field53D(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 53J, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 53J at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field53J objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field53J> getField53J() {
        final List<Field53J> result = new ArrayList<>();
        final Tag[] tags = tags("53J");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field53J(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 86A, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 86A at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field86A objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field86A> getField86A() {
        final List<Field86A> result = new ArrayList<>();
        final Tag[] tags = tags("86A");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field86A(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 86D, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 86D at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field86D objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field86D> getField86D() {
        final List<Field86D> result = new ArrayList<>();
        final Tag[] tags = tags("86D");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field86D(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 86J, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 86J at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field86J objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field86J> getField86J() {
        final List<Field86J> result = new ArrayList<>();
        final Tag[] tags = tags("86J");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field86J(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 56A, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 56A at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field56A objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field56A> getField56A() {
        final List<Field56A> result = new ArrayList<>();
        final Tag[] tags = tags("56A");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field56A(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 56D, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 56D at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field56D objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field56D> getField56D() {
        final List<Field56D> result = new ArrayList<>();
        final Tag[] tags = tags("56D");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field56D(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 56J, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 56J at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field56J objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field56J> getField56J() {
        final List<Field56J> result = new ArrayList<>();
        final Tag[] tags = tags("56J");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field56J(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 57A, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 57A at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field57A objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field57A> getField57A() {
        final List<Field57A> result = new ArrayList<>();
        final Tag[] tags = tags("57A");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field57A(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 57D, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 57D at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field57D objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field57D> getField57D() {
        final List<Field57D> result = new ArrayList<>();
        final Tag[] tags = tags("57D");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field57D(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 57J, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 57J at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field57J objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field57J> getField57J() {
        final List<Field57J> result = new ArrayList<>();
        final Tag[] tags = tags("57J");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field57J(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 58A, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 58A at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field58A objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field58A> getField58A() {
        final List<Field58A> result = new ArrayList<>();
        final Tag[] tags = tags("58A");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field58A(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 58D, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 58D at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field58D objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field58D> getField58D() {
        final List<Field58D> result = new ArrayList<>();
        final Tag[] tags = tags("58D");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field58D(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 58J, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 58J at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field58J objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field58J> getField58J() {
        final List<Field58J> result = new ArrayList<>();
        final Tag[] tags = tags("58J");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field58J(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 18A, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 18A at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field18A objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field18A> getField18A() {
        final List<Field18A> result = new ArrayList<>();
        final Tag[] tags = tags("18A");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field18A(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 30F, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 30F at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field30F objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field30F> getField30F() {
        final List<Field30F> result = new ArrayList<>();
        final Tag[] tags = tags("30F");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field30F(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 32H, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 32H at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field32H objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field32H> getField32H() {
        final List<Field32H> result = new ArrayList<>();
        final Tag[] tags = tags("32H");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field32H(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 22L, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 22L at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field22L objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field22L> getField22L() {
        final List<Field22L> result = new ArrayList<>();
        final Tag[] tags = tags("22L");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field22L(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 91A, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 91A at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field91A objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field91A> getField91A() {
        final List<Field91A> result = new ArrayList<>();
        final Tag[] tags = tags("91A");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field91A(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 91D, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 91D at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field91D objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field91D> getField91D() {
        final List<Field91D> result = new ArrayList<>();
        final Tag[] tags = tags("91D");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field91D(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 91J, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 91J at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field91J objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field91J> getField91J() {
        final List<Field91J> result = new ArrayList<>();
        final Tag[] tags = tags("91J");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field91J(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 22M, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 22M at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field22M objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field22M> getField22M() {
        final List<Field22M> result = new ArrayList<>();
        final Tag[] tags = tags("22M");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field22M(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 22N, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 22N at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field22N objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field22N> getField22N() {
        final List<Field22N> result = new ArrayList<>();
        final Tag[] tags = tags("22N");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field22N(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 22P, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 22P at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field22P objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field22P> getField22P() {
        final List<Field22P> result = new ArrayList<>();
        final Tag[] tags = tags("22P");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field22P(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 22R, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 22R at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field22R objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field22R> getField22R() {
        final List<Field22R> result = new ArrayList<>();
        final Tag[] tags = tags("22R");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field22R(tag.getValue()));
            }
        }
        return result;
    }
    
    /**
     * Iterates through block4 fields and return all occurrences of fields whose names matches 22S, 
     * or <code>Collections.emptyList()</code> if none is found.
     * Multiple occurrences of field 22S at MT340 are expected at one sequence or across several sequences.
     * 
     * @return a List of Field22S objects or <code>Collections.emptyList()</code> if none is not found
     * @see SwiftTagListBlock#getTagsByName(String)
     * @throws IllegalStateException if SwiftMessage object is not initialized
     */
    public List<Field22S> getField22S() {
        final List<Field22S> result = new ArrayList<>();
        final Tag[] tags = tags("22S");
        if (tags != null && tags.length > 0) {
            for (Tag tag : tags) {
                result.add(new Field22S(tag.getValue()));
            }
        }
        return result;
    }
    

    /**
     * Class to model Sequence "A" in MT 340.
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public static class SequenceA extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceA() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceA(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        public static final Tag START_TAG = Field15A.emptyTag();

        /**
         * Creates a new instance of this sequence with the given tags inside.
         * @param tags may be null, an empty sequence containing only start and end sequence tags will be returned
         * @return a new instance of the sequence, initialized with the parameter tags
         * @since 7.7
         */
        @SequenceStyle(Type.SPLIT_BY_15)
        public static SequenceA newInstance(final Tag... tags) {
            final SequenceA result = new SequenceA();
            result.append(START_TAG);
            if (tags != null && tags.length > 0) {
                for (final Tag t : tags) {
                    result.append(t);
                }
            }
            return result;
        }

        /**
         * Create an empty $sequenceClassname.
         * This method is intended to avoid disambiguation for the newInstance() with variable list of blocks or tags
         * @return a new instance of the sequence
         * @since 7.7
         */
        public static SequenceA newInstance() {
            final SequenceA result = new SequenceA();
            result.append(START_TAG);
            return result;
        }

        /**
         * Create a new instance of $sequenceClassname and add the contents of all sequences given inside.
         * Mainly intended to create a sequence by adding subsequences
         * @param sequences a list of blocks to set as the new sequence content
         * @return a new instance of the sequence, initialized with the parameter sequences content
         * @since 7.7
         */
        public static SequenceA newInstance(final SwiftTagListBlock... sequences) {
            final SequenceA result = new SequenceA();
            result.append(START_TAG);
            if (sequences != null && sequences.length > 0) {
                for (final SwiftTagListBlock s : sequences) {
                    result.addTags(s.getTags());
                }
            }
            return result;
        }

    }
    /**
     * Get the single occurrence of SequenceA using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @since 7.7
     * @return a new sequence that may be empty, <em>never returns null</em>
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceA getSequenceA() {
        return getSequenceA(super.getSwiftMessageNotNullOrException().getBlock4());
    }
    
    /**
     * Get the single occurrence of SequenceA using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @param parentSequence a not null parent sequence to find SequenceA within it
     * @return the found sequence or an empty sequence if none is found, <em>never returns null</em>
     * @since 7.7
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceA getSequenceA(SwiftTagListBlock parentSequence) {
        final java.util.Map<String, SwiftTagListBlock> map = SwiftMessageUtils.splitByField15(parentSequence);
        if (map.containsKey("A")) {
            return new SequenceA(map.get("A"));
        }
        return new SequenceA();
    }


    /**
     * Class to model Sequence "B" in MT 340.
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public static class SequenceB extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceB() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceB(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        public static final Tag START_TAG = Field15B.emptyTag();

        /**
         * Creates a new instance of this sequence with the given tags inside.
         * @param tags may be null, an empty sequence containing only start and end sequence tags will be returned
         * @return a new instance of the sequence, initialized with the parameter tags
         * @since 7.7
         */
        @SequenceStyle(Type.SPLIT_BY_15)
        public static SequenceB newInstance(final Tag... tags) {
            final SequenceB result = new SequenceB();
            result.append(START_TAG);
            if (tags != null && tags.length > 0) {
                for (final Tag t : tags) {
                    result.append(t);
                }
            }
            return result;
        }

        /**
         * Create an empty $sequenceClassname.
         * This method is intended to avoid disambiguation for the newInstance() with variable list of blocks or tags
         * @return a new instance of the sequence
         * @since 7.7
         */
        public static SequenceB newInstance() {
            final SequenceB result = new SequenceB();
            result.append(START_TAG);
            return result;
        }

        /**
         * Create a new instance of $sequenceClassname and add the contents of all sequences given inside.
         * Mainly intended to create a sequence by adding subsequences
         * @param sequences a list of blocks to set as the new sequence content
         * @return a new instance of the sequence, initialized with the parameter sequences content
         * @since 7.7
         */
        public static SequenceB newInstance(final SwiftTagListBlock... sequences) {
            final SequenceB result = new SequenceB();
            result.append(START_TAG);
            if (sequences != null && sequences.length > 0) {
                for (final SwiftTagListBlock s : sequences) {
                    result.addTags(s.getTags());
                }
            }
            return result;
        }

    }
    /**
     * Get the single occurrence of SequenceB using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @since 7.7
     * @return a new sequence that may be empty, <em>never returns null</em>
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceB getSequenceB() {
        return getSequenceB(super.getSwiftMessageNotNullOrException().getBlock4());
    }
    
    /**
     * Get the single occurrence of SequenceB using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @param parentSequence a not null parent sequence to find SequenceB within it
     * @return the found sequence or an empty sequence if none is found, <em>never returns null</em>
     * @since 7.7
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceB getSequenceB(SwiftTagListBlock parentSequence) {
        final java.util.Map<String, SwiftTagListBlock> map = SwiftMessageUtils.splitByField15(parentSequence);
        if (map.containsKey("B")) {
            return new SequenceB(map.get("B"));
        }
        return new SequenceB();
    }


    /**
     * Class to model Sequence "B1" in MT 340.
     */
    public static class SequenceB1 extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceB1() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceB1(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        /**
         * First mandatory tag name of the sequence: <em>"30V"  </em>.
         * Array format is for cases when more than one letter options is allowed
         */
        public static final String[] START = { "30V"   } ;

        /**
         * Last mandatory tag name of the sequence: <em>"38D"  </em>
         * Array format is for cases when more than one letter options is allowed
         */
        protected static final String[] END = { "38D"   };

        /**
         * List of optional tags after the last mandatory tag.
         */
        protected static final String[] TAIL = new String[]{  };

        /**
         * Same as {@link #newInstance(int, int, Tag...)} using zero for the indexes.
         * @param tags the list of tags to set as sequence content
         * @return a new instance of the sequence, initialized with the parameter tags
         */
        @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
        public static SequenceB1 newInstance(final Tag... tags) {
            return newInstance(0, 0, tags);
        }

        /**
         * Creates a sequence with starting and ending tags set to the indicated tags in from the
         * {@link #START} and {@link #END} lists of mandatory fields, and with the content between
         * the starting and ending tag initialized with the given optional tags.
         *
         * @param start a zero-based index within the list of mandatory starting tags in the sequence
         * @param end a zero-based index within the list of mandatory ending tags in the sequence
         * @param tags the list of tags to set as sequence content
         * @return a new instance of the sequence, initialized with the parameter tags
         */
        @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
        public static SequenceB1 newInstance(final int start, final int end, final Tag... tags) {
            final SequenceB1 result = new SequenceB1();
            result.append(new Tag(START[start], ""));
            if (tags != null && tags.length > 0) {
                for (final Tag t : tags) {
                    result.append(t);
                }
            }
            result.append(new Tag(END[end], ""));
            return result;
        }
    }
    /**
     * Get the single occurrence of SequenceB1 delimited by leading tag and end, with an optional tail.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     * If block 4 is empty this method returns null.
     *
     * @return the found sequence or an empty sequence if none is found
     * @see SwiftTagListBlock#getSubBlockDelimitedWithOptionalTail(String[], String[], String[])
     */
    @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
    public SequenceB1 getSequenceB1() {
        return getSequenceB1(super.getSwiftMessageNotNullOrException().getBlock4());
    }
    
    /**
     * Get the single occurrence of SequenceB1 delimited by leading tag and end, with an optional tail.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     * If block 4 is empty this method returns null.
     *
     * @see SwiftTagListBlock#getSubBlockDelimitedWithOptionalTail(String[], String[], String[])
     * @param parentSequence a not null parent sequence to find SequenceB1 within it
     * @return the found sequence or an empty sequence if none is found, or null if the parent sequence is null or empty
     * @since 7.7
     */
    @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
    public SequenceB1 getSequenceB1(SwiftTagListBlock parentSequence) {
        if (parentSequence != null && !parentSequence.isEmpty()) {
            final SwiftTagListBlock content = parentSequence.getSubBlockDelimitedWithOptionalTail(SequenceB1.START, SequenceB1.END, SequenceB1.TAIL);
            if (log.isLoggable(java.util.logging.Level.FINE)) {
                if (content == null) {
                    log.fine("content for sequence SequenceB1: is null");
                } else {
                    log.fine("content for sequence SequenceB1: "+content.tagNamesList());
                }
            }
            if (content == null) {
                return new SequenceB1();
            } else {
                return new SequenceB1(content);
            }
        }
        return null;
    }
 

    /**
     * Class to model Sequence "B2" in MT 340.
     */
    public static class SequenceB2 extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceB2() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceB2(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        /**
         * First mandatory tag name of the sequence: <em>"38G"  </em>.
         * Array format is for cases when more than one letter options is allowed
         */
        public static final String[] START = { "38G"   } ;

        /**
         * Last mandatory tag name of the sequence: <em>"22B"  </em>
         * Array format is for cases when more than one letter options is allowed
         */
        protected static final String[] END = { "22B"   };

        /**
         * List of optional tags after the last mandatory tag.
         */
        protected static final String[] TAIL = new String[]{  };

        /**
         * Same as {@link #newInstance(int, int, Tag...)} using zero for the indexes.
         * @param tags the list of tags to set as sequence content
         * @return a new instance of the sequence, initialized with the parameter tags
         */
        @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
        public static SequenceB2 newInstance(final Tag... tags) {
            return newInstance(0, 0, tags);
        }

        /**
         * Creates a sequence with starting and ending tags set to the indicated tags in from the
         * {@link #START} and {@link #END} lists of mandatory fields, and with the content between
         * the starting and ending tag initialized with the given optional tags.
         *
         * @param start a zero-based index within the list of mandatory starting tags in the sequence
         * @param end a zero-based index within the list of mandatory ending tags in the sequence
         * @param tags the list of tags to set as sequence content
         * @return a new instance of the sequence, initialized with the parameter tags
         */
        @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
        public static SequenceB2 newInstance(final int start, final int end, final Tag... tags) {
            final SequenceB2 result = new SequenceB2();
            result.append(new Tag(START[start], ""));
            if (tags != null && tags.length > 0) {
                for (final Tag t : tags) {
                    result.append(t);
                }
            }
            result.append(new Tag(END[end], ""));
            return result;
        }
    }
    /**
     * Get the single occurrence of SequenceB2 delimited by leading tag and end, with an optional tail.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     * If block 4 is empty this method returns null.
     *
     * @return the found sequence or an empty sequence if none is found
     * @see SwiftTagListBlock#getSubBlockDelimitedWithOptionalTail(String[], String[], String[])
     */
    @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
    public SequenceB2 getSequenceB2() {
        return getSequenceB2(super.getSwiftMessageNotNullOrException().getBlock4());
    }
    
    /**
     * Get the single occurrence of SequenceB2 delimited by leading tag and end, with an optional tail.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     * If block 4 is empty this method returns null.
     *
     * @see SwiftTagListBlock#getSubBlockDelimitedWithOptionalTail(String[], String[], String[])
     * @param parentSequence a not null parent sequence to find SequenceB2 within it
     * @return the found sequence or an empty sequence if none is found, or null if the parent sequence is null or empty
     * @since 7.7
     */
    @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
    public SequenceB2 getSequenceB2(SwiftTagListBlock parentSequence) {
        if (parentSequence != null && !parentSequence.isEmpty()) {
            final SwiftTagListBlock content = parentSequence.getSubBlockDelimitedWithOptionalTail(SequenceB2.START, SequenceB2.END, SequenceB2.TAIL);
            if (log.isLoggable(java.util.logging.Level.FINE)) {
                if (content == null) {
                    log.fine("content for sequence SequenceB2: is null");
                } else {
                    log.fine("content for sequence SequenceB2: "+content.tagNamesList());
                }
            }
            if (content == null) {
                return new SequenceB2();
            } else {
                return new SequenceB2(content);
            }
        }
        return null;
    }
 

    /**
     * Class to model Sequence "C" in MT 340.
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public static class SequenceC extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceC() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceC(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        public static final Tag START_TAG = Field15C.emptyTag();

        /**
         * Creates a new instance of this sequence with the given tags inside.
         * @param tags may be null, an empty sequence containing only start and end sequence tags will be returned
         * @return a new instance of the sequence, initialized with the parameter tags
         * @since 7.7
         */
        @SequenceStyle(Type.SPLIT_BY_15)
        public static SequenceC newInstance(final Tag... tags) {
            final SequenceC result = new SequenceC();
            result.append(START_TAG);
            if (tags != null && tags.length > 0) {
                for (final Tag t : tags) {
                    result.append(t);
                }
            }
            return result;
        }

        /**
         * Create an empty $sequenceClassname.
         * This method is intended to avoid disambiguation for the newInstance() with variable list of blocks or tags
         * @return a new instance of the sequence
         * @since 7.7
         */
        public static SequenceC newInstance() {
            final SequenceC result = new SequenceC();
            result.append(START_TAG);
            return result;
        }

        /**
         * Create a new instance of $sequenceClassname and add the contents of all sequences given inside.
         * Mainly intended to create a sequence by adding subsequences
         * @param sequences a list of blocks to set as the new sequence content
         * @return a new instance of the sequence, initialized with the parameter sequences content
         * @since 7.7
         */
        public static SequenceC newInstance(final SwiftTagListBlock... sequences) {
            final SequenceC result = new SequenceC();
            result.append(START_TAG);
            if (sequences != null && sequences.length > 0) {
                for (final SwiftTagListBlock s : sequences) {
                    result.addTags(s.getTags());
                }
            }
            return result;
        }

    }
    /**
     * Get the single occurrence of SequenceC using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @since 7.7
     * @return a new sequence that may be empty, <em>never returns null</em>
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceC getSequenceC() {
        return getSequenceC(super.getSwiftMessageNotNullOrException().getBlock4());
    }
    
    /**
     * Get the single occurrence of SequenceC using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @param parentSequence a not null parent sequence to find SequenceC within it
     * @return the found sequence or an empty sequence if none is found, <em>never returns null</em>
     * @since 7.7
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceC getSequenceC(SwiftTagListBlock parentSequence) {
        final java.util.Map<String, SwiftTagListBlock> map = SwiftMessageUtils.splitByField15(parentSequence);
        if (map.containsKey("C")) {
            return new SequenceC(map.get("C"));
        }
        return new SequenceC();
    }


    /**
     * Class to model Sequence "D" in MT 340.
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public static class SequenceD extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceD() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceD(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        public static final Tag START_TAG = Field15D.emptyTag();

        /**
         * Creates a new instance of this sequence with the given tags inside.
         * @param tags may be null, an empty sequence containing only start and end sequence tags will be returned
         * @return a new instance of the sequence, initialized with the parameter tags
         * @since 7.7
         */
        @SequenceStyle(Type.SPLIT_BY_15)
        public static SequenceD newInstance(final Tag... tags) {
            final SequenceD result = new SequenceD();
            result.append(START_TAG);
            if (tags != null && tags.length > 0) {
                for (final Tag t : tags) {
                    result.append(t);
                }
            }
            return result;
        }

        /**
         * Create an empty $sequenceClassname.
         * This method is intended to avoid disambiguation for the newInstance() with variable list of blocks or tags
         * @return a new instance of the sequence
         * @since 7.7
         */
        public static SequenceD newInstance() {
            final SequenceD result = new SequenceD();
            result.append(START_TAG);
            return result;
        }

        /**
         * Create a new instance of $sequenceClassname and add the contents of all sequences given inside.
         * Mainly intended to create a sequence by adding subsequences
         * @param sequences a list of blocks to set as the new sequence content
         * @return a new instance of the sequence, initialized with the parameter sequences content
         * @since 7.7
         */
        public static SequenceD newInstance(final SwiftTagListBlock... sequences) {
            final SequenceD result = new SequenceD();
            result.append(START_TAG);
            if (sequences != null && sequences.length > 0) {
                for (final SwiftTagListBlock s : sequences) {
                    result.addTags(s.getTags());
                }
            }
            return result;
        }

    }
    /**
     * Get the single occurrence of SequenceD using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @since 7.7
     * @return a new sequence that may be empty, <em>never returns null</em>
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceD getSequenceD() {
        return getSequenceD(super.getSwiftMessageNotNullOrException().getBlock4());
    }
    
    /**
     * Get the single occurrence of SequenceD using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @param parentSequence a not null parent sequence to find SequenceD within it
     * @return the found sequence or an empty sequence if none is found, <em>never returns null</em>
     * @since 7.7
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceD getSequenceD(SwiftTagListBlock parentSequence) {
        final java.util.Map<String, SwiftTagListBlock> map = SwiftMessageUtils.splitByField15(parentSequence);
        if (map.containsKey("D")) {
            return new SequenceD(map.get("D"));
        }
        return new SequenceD();
    }


    /**
     * Class to model Sequence "E" in MT 340.
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public static class SequenceE extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceE() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceE(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        public static final Tag START_TAG = Field15E.emptyTag();

        /**
         * Creates a new instance of this sequence with the given tags inside.
         * @param tags may be null, an empty sequence containing only start and end sequence tags will be returned
         * @return a new instance of the sequence, initialized with the parameter tags
         * @since 7.7
         */
        @SequenceStyle(Type.SPLIT_BY_15)
        public static SequenceE newInstance(final Tag... tags) {
            final SequenceE result = new SequenceE();
            result.append(START_TAG);
            if (tags != null && tags.length > 0) {
                for (final Tag t : tags) {
                    result.append(t);
                }
            }
            return result;
        }

        /**
         * Create an empty $sequenceClassname.
         * This method is intended to avoid disambiguation for the newInstance() with variable list of blocks or tags
         * @return a new instance of the sequence
         * @since 7.7
         */
        public static SequenceE newInstance() {
            final SequenceE result = new SequenceE();
            result.append(START_TAG);
            return result;
        }

        /**
         * Create a new instance of $sequenceClassname and add the contents of all sequences given inside.
         * Mainly intended to create a sequence by adding subsequences
         * @param sequences a list of blocks to set as the new sequence content
         * @return a new instance of the sequence, initialized with the parameter sequences content
         * @since 7.7
         */
        public static SequenceE newInstance(final SwiftTagListBlock... sequences) {
            final SequenceE result = new SequenceE();
            result.append(START_TAG);
            if (sequences != null && sequences.length > 0) {
                for (final SwiftTagListBlock s : sequences) {
                    result.addTags(s.getTags());
                }
            }
            return result;
        }

    }
    /**
     * Get the single occurrence of SequenceE using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @since 7.7
     * @return a new sequence that may be empty, <em>never returns null</em>
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceE getSequenceE() {
        return getSequenceE(super.getSwiftMessageNotNullOrException().getBlock4());
    }
    
    /**
     * Get the single occurrence of SequenceE using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @param parentSequence a not null parent sequence to find SequenceE within it
     * @return the found sequence or an empty sequence if none is found, <em>never returns null</em>
     * @since 7.7
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceE getSequenceE(SwiftTagListBlock parentSequence) {
        final java.util.Map<String, SwiftTagListBlock> map = SwiftMessageUtils.splitByField15(parentSequence);
        if (map.containsKey("E")) {
            return new SequenceE(map.get("E"));
        }
        return new SequenceE();
    }


    /**
     * Class to model Sequence "F" in MT 340.
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public static class SequenceF extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceF() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceF(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        public static final Tag START_TAG = Field15F.emptyTag();

        /**
         * Creates a new instance of this sequence with the given tags inside.
         * @param tags may be null, an empty sequence containing only start and end sequence tags will be returned
         * @return a new instance of the sequence, initialized with the parameter tags
         * @since 7.7
         */
        @SequenceStyle(Type.SPLIT_BY_15)
        public static SequenceF newInstance(final Tag... tags) {
            final SequenceF result = new SequenceF();
            result.append(START_TAG);
            if (tags != null && tags.length > 0) {
                for (final Tag t : tags) {
                    result.append(t);
                }
            }
            return result;
        }

        /**
         * Create an empty $sequenceClassname.
         * This method is intended to avoid disambiguation for the newInstance() with variable list of blocks or tags
         * @return a new instance of the sequence
         * @since 7.7
         */
        public static SequenceF newInstance() {
            final SequenceF result = new SequenceF();
            result.append(START_TAG);
            return result;
        }

        /**
         * Create a new instance of $sequenceClassname and add the contents of all sequences given inside.
         * Mainly intended to create a sequence by adding subsequences
         * @param sequences a list of blocks to set as the new sequence content
         * @return a new instance of the sequence, initialized with the parameter sequences content
         * @since 7.7
         */
        public static SequenceF newInstance(final SwiftTagListBlock... sequences) {
            final SequenceF result = new SequenceF();
            result.append(START_TAG);
            if (sequences != null && sequences.length > 0) {
                for (final SwiftTagListBlock s : sequences) {
                    result.addTags(s.getTags());
                }
            }
            return result;
        }

    }
    /**
     * Get the single occurrence of SequenceF using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @since 7.7
     * @return a new sequence that may be empty, <em>never returns null</em>
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceF getSequenceF() {
        return getSequenceF(super.getSwiftMessageNotNullOrException().getBlock4());
    }
    
    /**
     * Get the single occurrence of SequenceF using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @param parentSequence a not null parent sequence to find SequenceF within it
     * @return the found sequence or an empty sequence if none is found, <em>never returns null</em>
     * @since 7.7
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceF getSequenceF(SwiftTagListBlock parentSequence) {
        final java.util.Map<String, SwiftTagListBlock> map = SwiftMessageUtils.splitByField15(parentSequence);
        if (map.containsKey("F")) {
            return new SequenceF(map.get("F"));
        }
        return new SequenceF();
    }


    /**
     * Class to model Sequence "G" in MT 340.
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public static class SequenceG extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceG() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceG(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        public static final Tag START_TAG = Field15G.emptyTag();

        /**
         * Creates a new instance of this sequence with the given tags inside.
         * @param tags may be null, an empty sequence containing only start and end sequence tags will be returned
         * @return a new instance of the sequence, initialized with the parameter tags
         * @since 7.7
         */
        @SequenceStyle(Type.SPLIT_BY_15)
        public static SequenceG newInstance(final Tag... tags) {
            final SequenceG result = new SequenceG();
            result.append(START_TAG);
            if (tags != null && tags.length > 0) {
                for (final Tag t : tags) {
                    result.append(t);
                }
            }
            return result;
        }

        /**
         * Create an empty $sequenceClassname.
         * This method is intended to avoid disambiguation for the newInstance() with variable list of blocks or tags
         * @return a new instance of the sequence
         * @since 7.7
         */
        public static SequenceG newInstance() {
            final SequenceG result = new SequenceG();
            result.append(START_TAG);
            return result;
        }

        /**
         * Create a new instance of $sequenceClassname and add the contents of all sequences given inside.
         * Mainly intended to create a sequence by adding subsequences
         * @param sequences a list of blocks to set as the new sequence content
         * @return a new instance of the sequence, initialized with the parameter sequences content
         * @since 7.7
         */
        public static SequenceG newInstance(final SwiftTagListBlock... sequences) {
            final SequenceG result = new SequenceG();
            result.append(START_TAG);
            if (sequences != null && sequences.length > 0) {
                for (final SwiftTagListBlock s : sequences) {
                    result.addTags(s.getTags());
                }
            }
            return result;
        }

    }
    /**
     * Get the single occurrence of SequenceG using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @since 7.7
     * @return a new sequence that may be empty, <em>never returns null</em>
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceG getSequenceG() {
        return getSequenceG(super.getSwiftMessageNotNullOrException().getBlock4());
    }
    
    /**
     * Get the single occurrence of SequenceG using field field 15 as sequence boundary.
     * The presence of this method indicates that this sequence can occur only once according to the Standard.
     *
     * @param parentSequence a not null parent sequence to find SequenceG within it
     * @return the found sequence or an empty sequence if none is found, <em>never returns null</em>
     * @since 7.7
     */
    @SequenceStyle(Type.SPLIT_BY_15)
    public SequenceG getSequenceG(SwiftTagListBlock parentSequence) {
        final java.util.Map<String, SwiftTagListBlock> map = SwiftMessageUtils.splitByField15(parentSequence);
        if (map.containsKey("G")) {
            return new SequenceG(map.get("G"));
        }
        return new SequenceG();
    }


    /**
     * Class to model Sequence "G1" in MT 340.
     */
    public static class SequenceG1 extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceG1() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceG1(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        /**
         * The name of the first tag in the sequence which must be mandatory.
         * May be null if we cannot determine this safely
         */
        public static final String START_NAME =  "22L"  ;
    }


    /**
     * Class to model Sequence "G1a" in MT 340.
     */
    public static class SequenceG1a extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceG1a() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceG1a(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        /**
         * First mandatory tag name of the sequence: <em>"22M"  </em>.
         * Array format is for cases when more than one letter options is allowed
         */
        public static final String[] START = { "22M"   } ;

        /**
         * Last mandatory tag name of the sequence: <em>"22N"  </em>
         * Array format is for cases when more than one letter options is allowed
         */
        protected static final String[] END = { "22N"   };

        /**
         * List of optional tags after the last mandatory tag.
         */
        protected static final String[] TAIL = new String[]{  };

        /**
         * Same as {@link #newInstance(int, int, Tag...)} using zero for the indexes.
         * @param tags the list of tags to set as sequence content
         * @return a new instance of the sequence, initialized with the parameter tags
         */
        @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
        public static SequenceG1a newInstance(final Tag... tags) {
            return newInstance(0, 0, tags);
        }

        /**
         * Creates a sequence with starting and ending tags set to the indicated tags in from the
         * {@link #START} and {@link #END} lists of mandatory fields, and with the content between
         * the starting and ending tag initialized with the given optional tags.
         *
         * @param start a zero-based index within the list of mandatory starting tags in the sequence
         * @param end a zero-based index within the list of mandatory ending tags in the sequence
         * @param tags the list of tags to set as sequence content
         * @return a new instance of the sequence, initialized with the parameter tags
         */
        @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
        public static SequenceG1a newInstance(final int start, final int end, final Tag... tags) {
            final SequenceG1a result = new SequenceG1a();
            result.append(new Tag(START[start], ""));
            if (tags != null && tags.length > 0) {
                for (final Tag t : tags) {
                    result.append(t);
                }
            }
            result.append(new Tag(END[end], ""));
            return result;
        }
    }
    /**
     * Get the list of SequenceG1a delimited by leading tag and end, with an optional tail.
     * The presence of this method indicates that this sequence can occur more than once according to the Standard.
     * If message is empty or no sequences are found <em>an empty list</em> is returned.
     *
     * @return the found sequences or an empty list if none is found
     * @see SwiftTagListBlock#getSubBlocksDelimitedWithOptionalTail(String[], String[], String[])
     */
    @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
    public List<SequenceG1a> getSequenceG1aList() {
        return getSequenceG1aList(super.getSwiftMessageNotNullOrException().getBlock4());
    }
    
    /**
     * Get the list of SequenceG1a delimited by leading tag and end, with an optional tail.
     * The presence of this method indicates that this sequence can occur more than once according to the Standard.
     * If message is empty or no sequences are found <em>an empty list</em> is returned.
     *
     * @see SwiftTagListBlock#getSubBlocksDelimitedWithOptionalTail(String[], String[], String[])
     * @param parentSequence a not null parent sequence to find SequenceG1a within it
     * @return the found sequences or an empty list if none is found or parent sequence is null
     * @since 7.7
     */
    @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
    public static List<SequenceG1a> getSequenceG1aList(final SwiftTagListBlock parentSequence) {
        if (parentSequence != null) {
            final List<SwiftTagListBlock> blocks = parentSequence.getSubBlocksDelimitedWithOptionalTail(SequenceG1a.START, SequenceG1a.END, SequenceG1a.TAIL);
            if (blocks != null && !blocks.isEmpty()) {
                final List<SequenceG1a> result = new ArrayList<>(blocks.size());
                for (final SwiftTagListBlock b : blocks) {
                    result.add(new SequenceG1a(b));
                }
                return result;
            }
        }
        return Collections.emptyList();
    }
 

    /**
     * Class to model Sequence "G1a1" in MT 340.
     */
    public static class SequenceG1a1 extends SwiftTagListBlock {
        private static final long serialVersionUID = 1L;
        
        /**
         * Constructs an empty sequence.
         */
        private SequenceG1a1() {
            super(new ArrayList<>());
        }

        /**
         * Creates a sequence with the given content.
         * @see SwiftTagListBlock
         */
        private SequenceG1a1(final SwiftTagListBlock content) {
            super(content.getTags());
        }

        /**
         * First mandatory tag name of the sequence: <em>"22P"  </em>.
         * Array format is for cases when more than one letter options is allowed
         */
        public static final String[] START = { "22P"   } ;

        /**
         * Last mandatory tag name of the sequence: <em>"22R"  </em>
         * Array format is for cases when more than one letter options is allowed
         */
        protected static final String[] END = { "22R"   };

        /**
         * List of optional tags after the last mandatory tag.
         */
        protected static final String[] TAIL = new String[]{  };

        /**
         * Same as {@link #newInstance(int, int, Tag...)} using zero for the indexes.
         * @param tags the list of tags to set as sequence content
         * @return a new instance of the sequence, initialized with the parameter tags
         */
        @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
        public static SequenceG1a1 newInstance(final Tag... tags) {
            return newInstance(0, 0, tags);
        }

        /**
         * Creates a sequence with starting and ending tags set to the indicated tags in from the
         * {@link #START} and {@link #END} lists of mandatory fields, and with the content between
         * the starting and ending tag initialized with the given optional tags.
         *
         * @param start a zero-based index within the list of mandatory starting tags in the sequence
         * @param end a zero-based index within the list of mandatory ending tags in the sequence
         * @param tags the list of tags to set as sequence content
         * @return a new instance of the sequence, initialized with the parameter tags
         */
        @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
        public static SequenceG1a1 newInstance(final int start, final int end, final Tag... tags) {
            final SequenceG1a1 result = new SequenceG1a1();
            result.append(new Tag(START[start], ""));
            if (tags != null && tags.length > 0) {
                for (final Tag t : tags) {
                    result.append(t);
                }
            }
            result.append(new Tag(END[end], ""));
            return result;
        }
    }
    /**
     * Get the list of SequenceG1a1 delimited by leading tag and end, with an optional tail.
     * The presence of this method indicates that this sequence can occur more than once according to the Standard.
     * If message is empty or no sequences are found <em>an empty list</em> is returned.
     *
     * @return the found sequences or an empty list if none is found
     * @see SwiftTagListBlock#getSubBlocksDelimitedWithOptionalTail(String[], String[], String[])
     */
    @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
    public List<SequenceG1a1> getSequenceG1a1List() {
        return getSequenceG1a1List(super.getSwiftMessageNotNullOrException().getBlock4());
    }
    
    /**
     * Get the list of SequenceG1a1 delimited by leading tag and end, with an optional tail.
     * The presence of this method indicates that this sequence can occur more than once according to the Standard.
     * If message is empty or no sequences are found <em>an empty list</em> is returned.
     *
     * @see SwiftTagListBlock#getSubBlocksDelimitedWithOptionalTail(String[], String[], String[])
     * @param parentSequence a not null parent sequence to find SequenceG1a1 within it
     * @return the found sequences or an empty list if none is found or parent sequence is null
     * @since 7.7
     */
    @SequenceStyle(Type.GENERATED_FIXED_WITH_OPTIONAL_TAIL)
    public static List<SequenceG1a1> getSequenceG1a1List(final SwiftTagListBlock parentSequence) {
        if (parentSequence != null) {
            final List<SwiftTagListBlock> blocks = parentSequence.getSubBlocksDelimitedWithOptionalTail(SequenceG1a1.START, SequenceG1a1.END, SequenceG1a1.TAIL);
            if (blocks != null && !blocks.isEmpty()) {
                final List<SequenceG1a1> result = new ArrayList<>(blocks.size());
                for (final SwiftTagListBlock b : blocks) {
                    result.add(new SequenceG1a1(b));
                }
                return result;
            }
        }
        return Collections.emptyList();
    }
 



}