From 1a7aa1218aa860410bf456e0d1180ebd7e221ed4 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 16 Oct 2020 01:57:47 -0400 Subject: [PATCH] Revert "Merge pull request #15 from cyberpwnn/performance-passes" This reverts commit e530e30878e39cd08f760b7d7e13ba49836433e1. --- .../iris/command/CommandIrisDownload.java | 4 +-- .../iris/command/CommandIrisObjectPaste.java | 8 ++--- .../iris/command/CommandIrisObjectSave.java | 8 ++--- .../command/CommandIrisStructureCreate.java | 8 ++--- .../iris/command/CommandIrisStudioGoto.java | 8 ++--- .../command/CommandIrisStudioPackage.java | 8 ++--- .../com/volmit/iris/gui/NoiseExplorer.java | 2 +- .../com/volmit/iris/link/MythicMobsLink.java | 2 +- .../volmit/iris/manager/IrisDataManager.java | 12 +++---- src/main/java/com/volmit/iris/util/B.java | 4 +-- src/main/java/com/volmit/iris/util/C.java | 6 ++-- .../com/volmit/iris/util/CompoundTag.java | 4 +-- .../volmit/iris/util/DoubleArrayUtils.java | 5 ++- src/main/java/com/volmit/iris/util/Form.java | 36 +++++++++---------- src/main/java/com/volmit/iris/util/IO.java | 12 +++---- .../java/com/volmit/iris/util/JSONObject.java | 6 ++-- src/main/java/com/volmit/iris/util/KList.java | 7 ++-- .../java/com/volmit/iris/util/ListTag.java | 4 +-- .../iris/util/ObjectResourceLoader.java | 4 +-- .../com/volmit/iris/util/ResourceLoader.java | 4 +-- src/main/java/com/volmit/iris/util/V.java | 2 +- .../java/com/volmit/iris/util/Violator.java | 32 ++++++++--------- .../com/volmit/iris/util/VirtualCommand.java | 2 +- 23 files changed, 97 insertions(+), 91 deletions(-) diff --git a/src/main/java/com/volmit/iris/command/CommandIrisDownload.java b/src/main/java/com/volmit/iris/command/CommandIrisDownload.java index 797e03a2a..61e81408b 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisDownload.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisDownload.java @@ -36,9 +36,9 @@ public class CommandIrisDownload extends MortarCommand for(String i : args) { - if (i.equals("-t") || i.equals("--trim")) { + if(i.equals("-t") || i.equals("--trim")) + { trim = true; - break; } } diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectPaste.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectPaste.java index 0c0465436..0ea74fa14 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectPaste.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectPaste.java @@ -48,10 +48,10 @@ public class CommandIrisObjectPaste extends MortarCommand for(String i : args) { - if (i.equalsIgnoreCase("-edit")) { - intoWand = true; - break; - } + if(i.equalsIgnoreCase("-edit")) + { + intoWand = true; + } } if(file == null || !file.exists()) diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectSave.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectSave.java index bb6ad9e59..ba081da3a 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectSave.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectSave.java @@ -51,10 +51,10 @@ public class CommandIrisObjectSave extends MortarCommand for(String i : args) { - if (i.equals("-o")) { - overwrite = true; - break; - } + if(i.equals("-o")) + { + overwrite = true; + } } Player p = sender.player(); diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStructureCreate.java b/src/main/java/com/volmit/iris/command/CommandIrisStructureCreate.java index a9ec56e6f..181edf2a2 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStructureCreate.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStructureCreate.java @@ -39,10 +39,10 @@ public class CommandIrisStructureCreate extends MortarCommand for(String i : args) { - if (i.equalsIgnoreCase("-3d")) { - d3 = true; - break; - } + if(i.equalsIgnoreCase("-3d")) + { + d3 = true; + } } sender.sendMessage("Creating new Structure"); diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStudioGoto.java b/src/main/java/com/volmit/iris/command/CommandIrisStudioGoto.java index 0ec7c9bf8..9db62d193 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStudioGoto.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStudioGoto.java @@ -74,10 +74,10 @@ public class CommandIrisStudioGoto extends MortarCommand for(String i : args) { - if (i.equalsIgnoreCase("-cave")) { - cave = true; - break; - } + if(i.equalsIgnoreCase("-cave")) + { + cave = true; + } } IrisBiome biome = args[0].equals("this") ? g.sampleTrueBiome(p.getLocation().getBlockX(), p.getLocation().getBlockZ()) : g.loadBiome(args[0]); diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStudioPackage.java b/src/main/java/com/volmit/iris/command/CommandIrisStudioPackage.java index 8efece1d0..95dc6d7ca 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStudioPackage.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStudioPackage.java @@ -38,10 +38,10 @@ public class CommandIrisStudioPackage extends MortarCommand for(String i : args) { - if (i.equalsIgnoreCase("-o")) { - o = true; - break; - } + if(i.equalsIgnoreCase("-o")) + { + o = true; + } } String dim = args[0]; diff --git a/src/main/java/com/volmit/iris/gui/NoiseExplorer.java b/src/main/java/com/volmit/iris/gui/NoiseExplorer.java index 696137d75..7c649fbbd 100644 --- a/src/main/java/com/volmit/iris/gui/NoiseExplorer.java +++ b/src/main/java/com/volmit/iris/gui/NoiseExplorer.java @@ -298,7 +298,7 @@ public class NoiseExplorer extends JPanel implements MouseWheelListener NoiseExplorer nv = new NoiseExplorer(); frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); KList li = new KList(NoiseStyle.values()).toStringList(); - combo = new JComboBox(li.toArray(new String[0])); + combo = new JComboBox(li.toArray(new String[li.size()])); combo.setSelectedItem("STATIC"); combo.setFocusable(false); combo.addActionListener(new ActionListener() diff --git a/src/main/java/com/volmit/iris/link/MythicMobsLink.java b/src/main/java/com/volmit/iris/link/MythicMobsLink.java index f3dc3c4df..0f26ec1fa 100644 --- a/src/main/java/com/volmit/iris/link/MythicMobsLink.java +++ b/src/main/java/com/volmit/iris/link/MythicMobsLink.java @@ -47,7 +47,7 @@ public class MythicMobsLink } } - return v.toArray(new String[0]); + return v.toArray(new String[v.size()]); } public Plugin getMythicMobs() diff --git a/src/main/java/com/volmit/iris/manager/IrisDataManager.java b/src/main/java/com/volmit/iris/manager/IrisDataManager.java index ab9660c18..4aac856f9 100644 --- a/src/main/java/com/volmit/iris/manager/IrisDataManager.java +++ b/src/main/java/com/volmit/iris/manager/IrisDataManager.java @@ -99,17 +99,17 @@ public class IrisDataManager { File examples = new File(dataFolder, "example"); examples.mkdirs(); - StringBuilder biomes = new StringBuilder(); - StringBuilder envs = new StringBuilder(); + String biomes = ""; + String envs = ""; for(Biome i : Biome.values()) { - biomes.append(i.name()).append("\n"); + biomes += i.name() + "\n"; } for(Environment i : Environment.values()) { - envs.append(i.name()).append("\n"); + envs += i.name() + "\n"; } try @@ -118,8 +118,8 @@ public class IrisDataManager new File(examples, "example-pack/biomes").mkdirs(); new File(examples, "example-pack/dimensions").mkdirs(); new File(examples, "example-pack/generators").mkdirs(); - IO.writeAll(new File(examples, "biome-list.txt"), biomes.toString()); - IO.writeAll(new File(examples, "environment-list.txt"), envs.toString()); + IO.writeAll(new File(examples, "biome-list.txt"), biomes); + IO.writeAll(new File(examples, "environment-list.txt"), envs); IrisGenerator gen = new IrisGenerator(); IrisNoiseGenerator n = new IrisNoiseGenerator(); diff --git a/src/main/java/com/volmit/iris/util/B.java b/src/main/java/com/volmit/iris/util/B.java index 62978848e..b20e2d5c1 100644 --- a/src/main/java/com/volmit/iris/util/B.java +++ b/src/main/java/com/volmit/iris/util/B.java @@ -133,7 +133,7 @@ public class B } } - return bt.toArray(new String[0]); + return bt.toArray(new String[bt.size()]); } public static String[] getItemTypes() @@ -146,7 +146,7 @@ public class B bt.add(v); } - return bt.toArray(new String[0]); + return bt.toArray(new String[bt.size()]); } public static BlockData getBlockData(String bdxf, IrisDimension resolver) diff --git a/src/main/java/com/volmit/iris/util/C.java b/src/main/java/com/volmit/iris/util/C.java index 3517b3431..d61637908 100644 --- a/src/main/java/com/volmit/iris/util/C.java +++ b/src/main/java/com/volmit/iris/util/C.java @@ -753,7 +753,7 @@ public enum C */ public static String getLastColors(String input) { - StringBuilder result = new StringBuilder(); + String result = ""; int length = input.length(); // Search backwards from the end as it is faster @@ -767,7 +767,7 @@ public enum C if(color != null) { - result.insert(0, color.toString()); + result = color.toString() + result; // Once we find a color or reset we can stop searching if(color.isColor() || color.equals(RESET)) @@ -778,7 +778,7 @@ public enum C } } - return result.toString(); + return result; } static diff --git a/src/main/java/com/volmit/iris/util/CompoundTag.java b/src/main/java/com/volmit/iris/util/CompoundTag.java index 78a80366c..f6df65522 100644 --- a/src/main/java/com/volmit/iris/util/CompoundTag.java +++ b/src/main/java/com/volmit/iris/util/CompoundTag.java @@ -72,9 +72,9 @@ public final class CompoundTag extends Tag { append = "(\"" + this.getName() + "\")"; } StringBuilder bldr = new StringBuilder(); - bldr.append("TAG_Compound").append(append).append(": ").append(value.size()).append(" entries\r\n{\r\n"); + bldr.append("TAG_Compound" + append + ": " + value.size() + " entries\r\n{\r\n"); for (Map.Entry entry : value.entrySet()) { - bldr.append(" ").append(entry.getValue().toString().replaceAll("\r\n", "\r\n ")).append("\r\n"); + bldr.append(" " + entry.getValue().toString().replaceAll("\r\n", "\r\n ") + "\r\n"); } bldr.append("}"); return bldr.toString(); diff --git a/src/main/java/com/volmit/iris/util/DoubleArrayUtils.java b/src/main/java/com/volmit/iris/util/DoubleArrayUtils.java index 5dd99359e..016acee40 100644 --- a/src/main/java/com/volmit/iris/util/DoubleArrayUtils.java +++ b/src/main/java/com/volmit/iris/util/DoubleArrayUtils.java @@ -5,7 +5,10 @@ public class DoubleArrayUtils { public static void shiftRight(double[] values, double push) { - if (values.length - 2 + 1 >= 0) System.arraycopy(values, 0, values, 1, values.length - 2 + 1); + for(int index = values.length - 2; index >= 0; index--) + { + values[index + 1] = values[index]; + } values[0] = push; } diff --git a/src/main/java/com/volmit/iris/util/Form.java b/src/main/java/com/volmit/iris/util/Form.java index bbadba5c9..ac5f83ec6 100644 --- a/src/main/java/com/volmit/iris/util/Form.java +++ b/src/main/java/com/volmit/iris/util/Form.java @@ -72,24 +72,24 @@ public class Form */ public static String capitalize(String s) { - StringBuilder roll = new StringBuilder(); + String roll = ""; boolean f = true; for(Character i : s.trim().toCharArray()) { if(f) { - roll.append(Character.toUpperCase(i)); + roll += Character.toUpperCase(i); f = false; } else { - roll.append(i); + roll += i; } } - return roll.toString(); + return roll; } /** @@ -101,11 +101,11 @@ public class Form */ public static String capitalizeWords(String s) { - StringBuilder rollx = new StringBuilder(); + String rollx = ""; for(String i : s.trim().split(" ")) { - rollx.append(" ").append(capitalize(i.trim())); + rollx += " " + capitalize(i.trim()); } return rollx.substring(1); @@ -876,7 +876,7 @@ public class Form */ public static String ofSize(long s, int div) { - double d = (double) s; + Double d = (double) s; String sub = "Bytes"; if(d > div - 1) @@ -929,7 +929,7 @@ public class Form */ public static String ofSize(long s, int div, int dec) { - double d = (double) s; + Double d = (double) s; String sub = "Bytes"; if(d > div - 1) @@ -979,7 +979,7 @@ public class Form { s = -s; } - double d = (double) s; + Double d = (double) s; String sub = "Grams"; if(d > div - 1) @@ -1038,27 +1038,27 @@ public class Form */ public static String cname(String clazz) { - StringBuilder codeName = new StringBuilder(); + String codeName = ""; for(Character i : clazz.toCharArray()) { if(Character.isUpperCase(i)) { - codeName.append("-").append(Character.toLowerCase(i)); + codeName = codeName + "-" + Character.toLowerCase(i); } else { - codeName.append(i); + codeName = codeName + i; } } - if(codeName.toString().startsWith("-")) + if(codeName.startsWith("-")) { - codeName = new StringBuilder(codeName.substring(1)); + codeName = codeName.substring(1); } - return codeName.toString(); + return codeName; } /** @@ -1439,17 +1439,17 @@ public class Form roman_numerals.put("IV", 4); roman_numerals.put("I", 1); - StringBuilder res = new StringBuilder(); + String res = ""; for(Map.Entry entry : roman_numerals.entrySet()) { int matches = num / entry.getValue(); - res.append(repeat(entry.getKey(), matches)); + res += repeat(entry.getKey(), matches); num = num % entry.getValue(); } - return res.toString(); + return res; } /** diff --git a/src/main/java/com/volmit/iris/util/IO.java b/src/main/java/com/volmit/iris/util/IO.java index 6ff0f80d5..8c0a49a0c 100644 --- a/src/main/java/com/volmit/iris/util/IO.java +++ b/src/main/java/com/volmit/iris/util/IO.java @@ -407,33 +407,33 @@ public class IO public static String readAll(File f) throws IOException { BufferedReader bu = new BufferedReader(new FileReader(f)); - StringBuilder c = new StringBuilder(); + String c = ""; String l = ""; while((l = bu.readLine()) != null) { - c.append(l).append("\n"); + c += l + "\n"; } bu.close(); - return c.toString(); + return c; } public static String readAll(InputStream in) throws IOException { BufferedReader bu = new BufferedReader(new InputStreamReader(in)); - StringBuilder c = new StringBuilder(); + String c = ""; String l = ""; while((l = bu.readLine()) != null) { - c.append(l).append("\n"); + c += l + "\n"; } bu.close(); - return c.toString(); + return c; } /** diff --git a/src/main/java/com/volmit/iris/util/JSONObject.java b/src/main/java/com/volmit/iris/util/JSONObject.java index 475789dde..3ab4a6115 100644 --- a/src/main/java/com/volmit/iris/util/JSONObject.java +++ b/src/main/java/com/volmit/iris/util/JSONObject.java @@ -1652,7 +1652,7 @@ public class JSONObject */ public static Object stringToValue(String string) { - double d; + Double d; if(string.equals("")) { return string; @@ -1682,8 +1682,8 @@ public class JSONObject { if(string.indexOf('.') > -1 || string.indexOf('e') > -1 || string.indexOf('E') > -1) { - d = Double.parseDouble(string); - if(!Double.isInfinite(d) && !Double.isNaN(d)) + d = Double.valueOf(string); + if(!d.isInfinite() && !d.isNaN()) { return d; } diff --git a/src/main/java/com/volmit/iris/util/KList.java b/src/main/java/com/volmit/iris/util/KList.java index a3b7858ee..3df3907e5 100644 --- a/src/main/java/com/volmit/iris/util/KList.java +++ b/src/main/java/com/volmit/iris/util/KList.java @@ -253,7 +253,7 @@ public class KList extends ArrayList implements List for(String i : toStringList()) { - b.append(split).append(i); + b.append(split + i); } return b.toString().substring(split.length()); @@ -382,7 +382,10 @@ public class KList extends ArrayList implements List @SuppressWarnings("unchecked") public KList add(T... t) { - Collections.addAll(super, t); + for(T i : t) + { + super.add(i); + } return this; } diff --git a/src/main/java/com/volmit/iris/util/ListTag.java b/src/main/java/com/volmit/iris/util/ListTag.java index f360972ec..357335145 100644 --- a/src/main/java/com/volmit/iris/util/ListTag.java +++ b/src/main/java/com/volmit/iris/util/ListTag.java @@ -88,9 +88,9 @@ public final class ListTag extends Tag { append = "(\"" + this.getName() + "\")"; } StringBuilder bldr = new StringBuilder(); - bldr.append("TAG_List").append(append).append(": ").append(value.size()).append(" entries of type ").append(NBTUtils.getTypeName(type)).append("\r\n{\r\n"); + bldr.append("TAG_List" + append + ": " + value.size() + " entries of type " + NBTUtils.getTypeName(type) + "\r\n{\r\n"); for (Tag t : value) { - bldr.append(" ").append(t.toString().replaceAll("\r\n", "\r\n ")).append("\r\n"); + bldr.append(" " + t.toString().replaceAll("\r\n", "\r\n ") + "\r\n"); } bldr.append("}"); return bldr.toString(); diff --git a/src/main/java/com/volmit/iris/util/ObjectResourceLoader.java b/src/main/java/com/volmit/iris/util/ObjectResourceLoader.java index 47d5bc475..a8aadec10 100644 --- a/src/main/java/com/volmit/iris/util/ObjectResourceLoader.java +++ b/src/main/java/com/volmit/iris/util/ObjectResourceLoader.java @@ -153,7 +153,7 @@ public class ObjectResourceLoader extends ResourceLoader } KList v = new KList<>(m); - possibleKeys = v.toArray(new String[0]); + possibleKeys = v.toArray(new String[v.size()]); return possibleKeys; } @@ -201,7 +201,7 @@ public class ObjectResourceLoader extends ResourceLoader } KList v = new KList<>(m); - possibleKeys = v.toArray(new String[0]); + possibleKeys = v.toArray(new String[v.size()]); return possibleKeys; } diff --git a/src/main/java/com/volmit/iris/util/ResourceLoader.java b/src/main/java/com/volmit/iris/util/ResourceLoader.java index 537715701..08c2e9a39 100644 --- a/src/main/java/com/volmit/iris/util/ResourceLoader.java +++ b/src/main/java/com/volmit/iris/util/ResourceLoader.java @@ -79,7 +79,7 @@ public class ResourceLoader } KList v = new KList<>(m); - preferredKeys = v.toArray(new String[0]); + preferredKeys = v.toArray(new String[v.size()]); return preferredKeys; } @@ -116,7 +116,7 @@ public class ResourceLoader } KList v = new KList<>(m); - possibleKeys = v.toArray(new String[0]); + possibleKeys = v.toArray(new String[v.size()]); return possibleKeys; } diff --git a/src/main/java/com/volmit/iris/util/V.java b/src/main/java/com/volmit/iris/util/V.java index 60962871f..e99f2e9cc 100644 --- a/src/main/java/com/volmit/iris/util/V.java +++ b/src/main/java/com/volmit/iris/util/V.java @@ -117,7 +117,7 @@ public class V try { - return (local ? Violator.getDeclaredMethod(o.getClass(), method, par.toArray(new Class[0])) : Violator.getMethod(o.getClass(), method, par.toArray(new Class[0]))).invoke(o, parameters); + return (local ? Violator.getDeclaredMethod(o.getClass(), method, par.toArray(new Class[par.size()])) : Violator.getMethod(o.getClass(), method, par.toArray(new Class[par.size()]))).invoke(o, parameters); } catch(Throwable e) diff --git a/src/main/java/com/volmit/iris/util/Violator.java b/src/main/java/com/volmit/iris/util/Violator.java index 70b5f68a6..cf1de4b8c 100644 --- a/src/main/java/com/volmit/iris/util/Violator.java +++ b/src/main/java/com/volmit/iris/util/Violator.java @@ -31,28 +31,28 @@ public class Violator { Constructor co = (Constructor) o; - StringBuilder mx = new StringBuilder(); + String mx = ""; for(Class i : co.getParameterTypes()) { - mx.append(",").append(i.getCanonicalName()); + mx += "," + i.getCanonicalName(); } - mx = new StringBuilder(mx.length() >= 1 ? mx.substring(1) : mx.toString()); + mx = mx.length() >= 1 ? mx.substring(1) : mx; return id(co.getDeclaringClass(), null) + "(" + mx + ")"; } if(o instanceof Method) { - StringBuilder mx = new StringBuilder(); + String mx = ""; for(Class i : ((Method) o).getParameterTypes()) { - mx.append(",").append(i.getCanonicalName()); + mx += "," + i.getCanonicalName(); } - mx = new StringBuilder(mx.length() >= 1 ? mx.substring(1) : mx.toString()); + mx = mx.length() >= 1 ? mx.substring(1) : mx; return id(((Method) o).getDeclaringClass(), null) + "." + ((Method) o).getName() + "(" + mx + ")"; } @@ -83,14 +83,14 @@ public class Violator public static Constructor getConstructor(Class c, Class... params) throws NoSuchMethodException, SecurityException { - StringBuilder mx = new StringBuilder(); + String mx = ""; for(Class i : params) { - mx.append(",").append(i.getCanonicalName()); + mx += "," + i.getCanonicalName(); } - mx = new StringBuilder(mx.length() >= 1 ? mx.substring(1) : mx.toString()); + mx = mx.length() >= 1 ? mx.substring(1) : mx; if(!h(id(c, null) + "(" + mx + ")")) { @@ -159,14 +159,14 @@ public class Violator public static Method getMethod(Class c, String name, Class... pars) throws Throwable { String iv = ""; - StringBuilder mx = new StringBuilder(); + String mx = ""; for(Class i : pars) { - mx.append(",").append(i.getCanonicalName()); + mx += "," + i.getCanonicalName(); } - mx = new StringBuilder(mx.length() >= 1 ? mx.substring(1) : mx.toString()); + mx = mx.length() >= 1 ? mx.substring(1) : mx; iv = id(c, null) + "." + name + "(" + mx + ")"; if(!h(iv)) @@ -191,7 +191,7 @@ public class Violator try { - Constructor co = getConstructor(c, cv.toArray(new Class[0])); + Constructor co = getConstructor(c, cv.toArray(new Class[cv.size()])); return (T) co.newInstance(parameters); } @@ -206,14 +206,14 @@ public class Violator public static Method getDeclaredMethod(Class c, String name, Class... pars) throws Throwable { String iv = ""; - StringBuilder mx = new StringBuilder(); + String mx = ""; for(Class i : pars) { - mx.append(",").append(i.getCanonicalName()); + mx += "," + i.getCanonicalName(); } - mx = new StringBuilder(mx.length() >= 1 ? mx.substring(1) : mx.toString()); + mx = mx.length() >= 1 ? mx.substring(1) : mx; iv = id(c, null) + "." + name + "(" + mx + ")"; if(!h(iv)) diff --git a/src/main/java/com/volmit/iris/util/VirtualCommand.java b/src/main/java/com/volmit/iris/util/VirtualCommand.java index e01186f7f..17ecd154f 100644 --- a/src/main/java/com/volmit/iris/util/VirtualCommand.java +++ b/src/main/java/com/volmit/iris/util/VirtualCommand.java @@ -115,7 +115,7 @@ public class VirtualCommand return true; } - return command.handle(vs, chain.toArray(new String[0])); + return command.handle(vs, chain.toArray(new String[chain.size()])); } private boolean checkPermissions(CommandSender sender, ICommand command2)