151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/*
22c87ad3a45cecf9e344487cad1abfdebe79f2c7cNarayan Kamath * Copyright (C) 2014 The Android Open Source Project
3694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *
651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This code is free software; you can redistribute it and/or modify it
751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * under the terms of the GNU General Public License version 2 only, as
851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * published by the Free Software Foundation.  Oracle designates this
951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * particular file as subject to the "Classpath" exception as provided
1051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * by Oracle in the LICENSE file that accompanied this code.
1151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *
1251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This code is distributed in the hope that it will be useful, but WITHOUT
1351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * version 2 for more details (a copy is included in the LICENSE file that
1651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * accompanied this code).
1751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *
1851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * You should have received a copy of the GNU General Public License version
1951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 2 along with this work; if not, write to the Free Software Foundation,
2051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
2151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *
2251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * or visit www.oracle.com if you need additional information or have any
2451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * questions.
2551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */
2651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
2751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipackage java.lang;
2851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
2951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
3051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/**
3151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A mutable sequence of characters.  This class provides an API compatible
32694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * with {@code StringBuffer}, but with no guarantee of synchronization.
3351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This class is designed for use as a drop-in replacement for
34694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * {@code StringBuffer} in places where the string buffer was being
3551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * used by a single thread (as is generally the case).   Where possible,
3651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * it is recommended that this class be used in preference to
37694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * {@code StringBuffer} as it will be faster under most implementations.
3851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *
39694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * <p>The principal operations on a {@code StringBuilder} are the
40694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * {@code append} and {@code insert} methods, which are
4151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * overloaded so as to accept data of any type. Each effectively
4251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * converts a given datum to a string and then appends or inserts the
4351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * characters of that string to the string builder. The
44694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * {@code append} method always adds these characters at the end
45694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * of the builder; the {@code insert} method adds the characters at
4651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a specified point.
4751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p>
48694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * For example, if {@code z} refers to a string builder object
49694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * whose current contents are "{@code start}", then
50694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * the method call {@code z.append("le")} would cause the string
51694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * builder to contain "{@code startle}", whereas
52694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * {@code z.insert(4, "le")} would alter the string builder to
53694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * contain "{@code starlet}".
54694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * <p>
55694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * In general, if sb refers to an instance of a {@code StringBuilder},
56694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * then {@code sb.append(x)} has the same effect as
57694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * {@code sb.insert(sb.length(), x)}.
5851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p>
5951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Every string builder has a capacity. As long as the length of the
6051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * character sequence contained in the string builder does not exceed
6151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the capacity, it is not necessary to allocate a new internal
6251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * buffer. If the internal buffer overflows, it is automatically made larger.
6351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *
64694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * <p>Instances of {@code StringBuilder} are not safe for
6551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * use by multiple threads. If such synchronization is required then it is
6651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * recommended that {@link java.lang.StringBuffer} be used.
6751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *
68694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * <p>Unless otherwise noted, passing a {@code null} argument to a constructor
69694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * or method in this class will cause a {@link NullPointerException} to be
70694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak * thrown.
71694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak *
7251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @author      Michael McCloskey
7351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see         java.lang.StringBuffer
7451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see         java.lang.String
7551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since       1.5
7651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */
7751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipublic final class StringBuilder
7851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    extends AbstractStringBuilder
79694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    implements java.io.Serializable, CharSequence
8051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski{
8151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
8251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /** use serialVersionUID for interoperability */
8351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    static final long serialVersionUID = 4383685877147921099L;
8451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
8551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
8651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Constructs a string builder with no characters in it and an
8751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * initial capacity of 16 characters.
8851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
8951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder() {
9051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super(16);
9151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
9251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
9351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
9451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Constructs a string builder with no characters in it and an
95694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * initial capacity specified by the {@code capacity} argument.
9651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
9751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      capacity  the initial capacity.
98694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * @throws     NegativeArraySizeException  if the {@code capacity}
99694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     *               argument is less than {@code 0}.
10051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
10151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder(int capacity) {
10251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super(capacity);
10351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
10451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
10551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
10651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Constructs a string builder initialized to the contents of the
10751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * specified string. The initial capacity of the string builder is
108694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * {@code 16} plus the length of the string argument.
10951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
11051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param   str   the initial contents of the buffer.
11151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
11251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder(String str) {
11351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super(str.length() + 16);
11451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        append(str);
11551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
11651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
11751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
11851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Constructs a string builder that contains the same characters
119694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * as the specified {@code CharSequence}. The initial capacity of
120694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * the string builder is {@code 16} plus the length of the
121694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * {@code CharSequence} argument.
12251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
12351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @param      seq   the sequence to copy.
12451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
12551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder(CharSequence seq) {
12651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        this(seq.length() + 16);
12751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        append(seq);
12851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
12951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
130694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
13151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(Object obj) {
13251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return append(String.valueOf(obj));
13351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
13451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
135694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
13651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(String str) {
13751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.append(str);
13851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
13951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
14051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
14151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
142694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * Appends the specified {@code StringBuffer} to this sequence.
14351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <p>
144694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * The characters of the {@code StringBuffer} argument are appended,
14551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * in order, to this sequence, increasing the
14651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * length of this sequence by the length of the argument.
147694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * If {@code sb} is {@code null}, then the four characters
148694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * {@code "null"} are appended to this sequence.
14951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <p>
15051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * Let <i>n</i> be the length of this character sequence just prior to
151694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * execution of the {@code append} method. Then the character at index
15251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <i>k</i> in the new character sequence is equal to the character at
15351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * index <i>k</i> in the old character sequence, if <i>k</i> is less than
15451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * <i>n</i>; otherwise, it is equal to the character at index <i>k-n</i>
155694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * in the argument {@code sb}.
15651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
157694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * @param   sb   the {@code StringBuffer} to append.
15851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @return  a reference to this object.
15951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
16051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(StringBuffer sb) {
16151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.append(sb);
16251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
16351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
16451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
165694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
16651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(CharSequence s) {
167694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        super.append(s);
168694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        return this;
16951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
17051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
17151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
17251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws     IndexOutOfBoundsException {@inheritDoc}
17351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
174694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
17551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(CharSequence s, int start, int end) {
17651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.append(s, start, end);
17751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
17851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
17951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
180694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
18151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(char[] str) {
18251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.append(str);
18351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
18451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
18551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
18651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
18751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws IndexOutOfBoundsException {@inheritDoc}
18851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
189694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
19051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(char[] str, int offset, int len) {
19151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.append(str, offset, len);
19251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
19351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
19451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
195694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
19651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(boolean b) {
19751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.append(b);
19851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
19951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
20051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
201694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
20251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(char c) {
20351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.append(c);
20451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
20551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
20651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
207694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
20851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(int i) {
20951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.append(i);
21051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
21151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
21251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
213694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
21451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(long lng) {
21551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.append(lng);
21651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
21751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
21851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
219694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
22051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(float f) {
22151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.append(f);
22251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
22351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
22451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
225694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
22651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder append(double d) {
22751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.append(d);
22851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
22951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
23051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
23151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
23251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @since 1.5
23351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
234694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
23551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder appendCodePoint(int codePoint) {
23651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.appendCodePoint(codePoint);
23751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
23851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
23951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
24051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
24151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
24251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
243694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
24451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder delete(int start, int end) {
24551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.delete(start, end);
24651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
24751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
24851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
24951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
25051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
25151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
252694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
25351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder deleteCharAt(int index) {
25451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.deleteCharAt(index);
25551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
25651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
25751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
25851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
25951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
26051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
261694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
26251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder replace(int start, int end, String str) {
26351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.replace(start, end, str);
26451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
26551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
26651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
26751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
26851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
26951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
270694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
27151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int index, char[] str, int offset,
27251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski                                int len)
27351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    {
27451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.insert(index, str, offset, len);
27551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
27651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
27751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
27851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
27951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
28051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
281694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
28251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int offset, Object obj) {
283694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak            super.insert(offset, obj);
284694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak            return this;
28551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
28651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
28751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
28851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
28951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
290694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
29151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int offset, String str) {
29251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.insert(offset, str);
29351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
29451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
29551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
29651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
29751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
29851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
299694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
30051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int offset, char[] str) {
30151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.insert(offset, str);
30251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
30351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
30451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
30551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
30651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws IndexOutOfBoundsException {@inheritDoc}
30751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
308694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
30951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int dstOffset, CharSequence s) {
310694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak            super.insert(dstOffset, s);
311694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak            return this;
31251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
31351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
31451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
31551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws IndexOutOfBoundsException {@inheritDoc}
31651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
317694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
31851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int dstOffset, CharSequence s,
31951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski                                int start, int end)
32051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    {
32151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.insert(dstOffset, s, start, end);
32251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
32351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
32451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
32551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
32651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
32751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
328694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
32951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int offset, boolean b) {
33051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.insert(offset, b);
33151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
33251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
33351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
33451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
33551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws IndexOutOfBoundsException {@inheritDoc}
33651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
337694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
33851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int offset, char c) {
33951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.insert(offset, c);
34051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
34151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
34251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
34351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
34451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
34551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
346694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
34751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int offset, int i) {
348694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        super.insert(offset, i);
349694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        return this;
35051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
35151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
35251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
35351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
35451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
355694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
35651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int offset, long l) {
357694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        super.insert(offset, l);
358694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        return this;
35951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
36051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
36151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
36251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
36351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
364694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
36551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int offset, float f) {
366694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        super.insert(offset, f);
367694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        return this;
36851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
36951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
37051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
37151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @throws StringIndexOutOfBoundsException {@inheritDoc}
37251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
373694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
37451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder insert(int offset, double d) {
375694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        super.insert(offset, d);
376694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        return this;
37751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
37851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
379694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
38051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public int indexOf(String str) {
381694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        return super.indexOf(str);
38251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
38351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
384694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
38551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public int indexOf(String str, int fromIndex) {
386694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        return super.indexOf(str, fromIndex);
38751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
38851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
389694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
39051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public int lastIndexOf(String str) {
391694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        return super.lastIndexOf(str);
39251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
39351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
394694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
39551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public int lastIndexOf(String str, int fromIndex) {
396694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak        return super.lastIndexOf(str, fromIndex);
39751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
39851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
399694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
40051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public StringBuilder reverse() {
40151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        super.reverse();
40251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        return this;
40351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
40451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
405694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak    @Override
40651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    public String toString() {
407b90c36f25b990336a456daad69ea9db9256b86cePrzemyslaw Szczepaniak        if (count == 0) {
408b90c36f25b990336a456daad69ea9db9256b86cePrzemyslaw Szczepaniak            return "";
409b90c36f25b990336a456daad69ea9db9256b86cePrzemyslaw Szczepaniak        }
410b90c36f25b990336a456daad69ea9db9256b86cePrzemyslaw Szczepaniak        return StringFactory.newStringFromChars(0, count, value);
41151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
41251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
41351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
414694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     * Save the state of the {@code StringBuilder} instance to a stream
41551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * (that is, serialize it).
41651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *
41751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * @serialData the number of characters currently stored in the string
418694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     *             builder ({@code int}), followed by the characters in the
419694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     *             string builder ({@code char[]}).   The length of the
420694e617f54a7bfbdad24913ce96f5d56f1a1960aPrzemyslaw Szczepaniak     *             {@code char} array may be greater than the number of
42151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *             characters currently stored in the string builder, in which
42251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     *             case extra characters are ignored.
42351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
42451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    private void writeObject(java.io.ObjectOutputStream s)
42551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        throws java.io.IOException {
42651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        s.defaultWriteObject();
42751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        s.writeInt(count);
42851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        s.writeObject(value);
42951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
43051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
43151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    /**
43251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * readObject is called to restore the state of the StringBuffer from
43351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     * a stream.
43451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski     */
43551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    private void readObject(java.io.ObjectInputStream s)
43651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        throws java.io.IOException, ClassNotFoundException {
43751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        s.defaultReadObject();
43851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        count = s.readInt();
43951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski        value = (char[]) s.readObject();
44051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski    }
44151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski
44251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski}
443