diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/CheckResourcesTarget.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/CheckResourcesTarget.java index 854157be802d..90c2b61c8d95 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/CheckResourcesTarget.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/CheckResourcesTarget.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2017 JetBrains s.r.o. - * - * 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. - */ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.jps.incremental.groovy; import com.intellij.util.containers.ContainerUtil; @@ -35,7 +21,7 @@ import java.io.File; import java.util.*; public class CheckResourcesTarget extends BuildTarget { - @NotNull private final JpsModule myModule; + private final @NotNull JpsModule myModule; CheckResourcesTarget(@NotNull JpsModule module, @NotNull Type targetType) { super(targetType); @@ -47,9 +33,8 @@ public class CheckResourcesTarget extends BuildTarget descriptors = rootIndex.getRootDescriptors(new File(rootId), Collections.singletonList((Type)getTargetType()), null); @@ -61,9 +46,8 @@ public class CheckResourcesTarget extends BuildTarget computeRootDescriptors(@NotNull JpsModel model, - @NotNull ModuleExcludeIndex index, - @NotNull IgnoredFileIndex ignoredFileIndex, - @NotNull BuildDataPaths dataPaths) { + public @NotNull List computeRootDescriptors(@NotNull JpsModel model, + @NotNull ModuleExcludeIndex index, + @NotNull IgnoredFileIndex ignoredFileIndex, + @NotNull BuildDataPaths dataPaths) { ResourcesTarget target = new ResourcesTarget(myModule, ResourcesTargetType.getInstance(isTests())); List resources = target.computeRootDescriptors(model, index, ignoredFileIndex, dataPaths); return ContainerUtil.map(resources, descriptor -> new GroovyResourceRootDescriptor(descriptor, this)); } - @NotNull @Override - public Collection getOutputRoots(@NotNull CompileContext context) { + public @NotNull Collection getOutputRoots(@NotNull CompileContext context) { return Collections.singletonList(getOutputRoot(context)); } @@ -109,8 +91,7 @@ public class CheckResourcesTarget extends BuildTarget TARGET_TYPES = Arrays.asList(PRODUCTION, TESTS); - @NotNull - public JpsModule getModule() { + public @NotNull JpsModule getModule() { return myModule; } @@ -140,23 +121,20 @@ public class CheckResourcesTarget extends BuildTarget computeAllTargets(@NotNull JpsModel model) { + public @NotNull List computeAllTargets(@NotNull JpsModel model) { return ContainerUtil.map(model.getProject().getModules(), module -> new CheckResourcesTarget(module, this)); } - @NotNull @Override - public BuildTargetLoader createLoader(@NotNull JpsModel model) { + public @NotNull BuildTargetLoader createLoader(@NotNull JpsModel model) { final Map modules = new HashMap<>(); for (JpsModule module : model.getProject().getModules()) { modules.put(module.getName(), module); } return new BuildTargetLoader() { - @Nullable @Override - public CheckResourcesTarget createTarget(@NotNull String targetId) { + public @Nullable CheckResourcesTarget createTarget(@NotNull String targetId) { JpsModule module = modules.get(targetId); return module != null ? new CheckResourcesTarget(module, Type.this) : null; } diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/EclipseOutputParser.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/EclipseOutputParser.java index 61bb5869cefc..ecf09dccd1ec 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/EclipseOutputParser.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/EclipseOutputParser.java @@ -1,4 +1,4 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.jps.incremental.groovy; import com.intellij.openapi.util.NlsSafe; @@ -79,8 +79,7 @@ class EclipseOutputParser { } } - @Nullable - private CompilerMessage parseMessage(@NlsSafe String msgText) { + private @Nullable CompilerMessage parseMessage(@NlsSafe String msgText) { // message should look like this: // 1. WARNING in /Users/andrew/git-repos/foo/src/main/java/packAction.java (at line 47) // public abstract class AbstractScmTagAction extends TaskAction implements BuildBadgeAction { diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/ForkedGroovyc.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/ForkedGroovyc.java index 962efec16dc3..0938ceab5804 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/ForkedGroovyc.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/ForkedGroovyc.java @@ -1,4 +1,4 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.jps.incremental.groovy; import com.intellij.execution.process.BaseOSProcessHandler; @@ -94,9 +94,8 @@ final class ForkedGroovyc implements GroovycFlavor { ); final Process process = Runtime.getRuntime().exec(ArrayUtilRt.toStringArray(cmd)); ProcessHandler handler = new BaseOSProcessHandler(process, StringUtil.join(cmd, " "), null) { - @NotNull @Override - public Future executeTask(@NotNull Runnable task) { + public @NotNull Future executeTask(@NotNull Runnable task) { return SharedThreadPool.getInstance().submit(task); } diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GreclipseBuilder.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GreclipseBuilder.java index 36f368bd44a9..29d90923334d 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GreclipseBuilder.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GreclipseBuilder.java @@ -1,4 +1,4 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.jps.incremental.groovy; import com.intellij.execution.process.BaseOSProcessHandler; @@ -73,8 +73,7 @@ public final class GreclipseBuilder extends ModuleLevelBuilder { } - @Nullable - private ClassLoader createGreclipseLoader(@Nullable String jar) { + private @Nullable ClassLoader createGreclipseLoader(@Nullable String jar) { if (StringUtil.isEmpty(jar)) return null; if (jar.equals(myGreclipseJar)) { @@ -99,9 +98,8 @@ public final class GreclipseBuilder extends ModuleLevelBuilder { } - @NotNull @Override - public List getCompilableFileExtensions() { + public @NotNull List getCompilableFileExtensions() { return Arrays.asList("groovy", "java"); } @@ -290,9 +288,8 @@ public final class GreclipseBuilder extends ModuleLevelBuilder { ); final Process process = Runtime.getRuntime().exec(ArrayUtilRt.toStringArray(cmd)); ProcessHandler handler = new BaseOSProcessHandler(process, StringUtil.join(cmd, " "), null) { - @NotNull @Override - public Future executeTask(@NotNull Runnable task) { + public @NotNull Future executeTask(@NotNull Runnable task) { return SharedThreadPool.getInstance().submit(task); } @@ -413,9 +410,8 @@ public final class GreclipseBuilder extends ModuleLevelBuilder { return StringUtil.join(cp, File.pathSeparator); } - @NotNull @Override - public String getPresentableName() { + public @NotNull String getPresentableName() { return GroovyJpsBundle.message("compiler.name.greclipse"); } diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GreclipseJpsCompilerSettings.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GreclipseJpsCompilerSettings.java index a270bdd1ecd8..362c09738d0d 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GreclipseJpsCompilerSettings.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GreclipseJpsCompilerSettings.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2015 JetBrains s.r.o. - * - * 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. - */ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.jps.incremental.groovy; import org.jetbrains.annotations.NotNull; @@ -31,14 +17,12 @@ public class GreclipseJpsCompilerSettings extends JpsCompositeElementBase getCanonicalModuleOutputs(CompileContext context, ModuleChunk chunk, Builder builder) { + static @Nullable Map getCanonicalModuleOutputs(CompileContext context, ModuleChunk chunk, Builder builder) { Map finalOutputs = new LinkedHashMap<>(); for (ModuleBuildTarget target : chunk.getTargets()) { File moduleOutputDir = target.getOutputDir(); @@ -142,9 +141,8 @@ public class GroovyBuilder extends ModuleLevelBuilder { return path.endsWith("." + GROOVY_EXTENSION); } - @NotNull @Override - public List getCompilableFileExtensions() { + public @NotNull List getCompilableFileExtensions() { return Collections.singletonList(GROOVY_EXTENSION); } @@ -154,8 +152,7 @@ public class GroovyBuilder extends ModuleLevelBuilder { } @Override - @NotNull - public String getPresentableName() { + public @NotNull String getPresentableName() { return myBuilderName; } diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyBuilderService.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyBuilderService.java index d8cb866ed4e3..66e0b4cfe155 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyBuilderService.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyBuilderService.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2012 JetBrains s.r.o. - * - * 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. - */ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.jps.incremental.groovy; import org.jetbrains.annotations.NotNull; @@ -27,21 +13,18 @@ import java.util.List; public class GroovyBuilderService extends BuilderService { - @NotNull @Override - public List> getTargetTypes() { + public @NotNull List> getTargetTypes() { return CheckResourcesTarget.TARGET_TYPES; } - @NotNull @Override - public List> createBuilders() { + public @NotNull List> createBuilders() { return Collections.singletonList(new GroovyResourceChecker()); } - @NotNull @Override - public List createModuleLevelBuilders() { + public @NotNull List createModuleLevelBuilders() { return Arrays.asList(new GroovyBuilder(true), new GroovyBuilder(false), new GreclipseBuilder()); } } diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyModelSerializerExtension.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyModelSerializerExtension.java index 5b62f6a5fd6e..5487a2b4bee6 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyModelSerializerExtension.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyModelSerializerExtension.java @@ -1,4 +1,4 @@ -// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.jps.incremental.groovy; import com.intellij.util.xmlb.XmlSerializer; @@ -12,9 +12,8 @@ import java.util.Arrays; import java.util.List; public final class GroovyModelSerializerExtension extends JpsModelSerializerExtension { - @NotNull @Override - public List getProjectExtensionSerializers() { + public @NotNull List getProjectExtensionSerializers() { return Arrays.asList(new JpsProjectExtensionSerializer("groovyc.xml", "GroovyCompilerProjectConfiguration") { @Override public void loadExtension(@NotNull JpsProject project, @NotNull Element componentTag) { diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyResourceChecker.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyResourceChecker.java index 294a8b324c58..b2d6233d2315 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyResourceChecker.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyResourceChecker.java @@ -1,4 +1,4 @@ -// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.jps.incremental.groovy; import com.intellij.openapi.util.Key; @@ -26,9 +26,8 @@ public class GroovyResourceChecker extends TargetBuilder holder, - @NotNull final BuildOutputConsumer outputConsumer, + final @NotNull BuildOutputConsumer outputConsumer, @NotNull CompileContext context) throws ProjectBuildException, IOException { if (context.getBuilderParameter(CHECKING_RESOURCES_REBUILD.toString()) == null) { return; @@ -54,8 +53,7 @@ public class GroovyResourceChecker extends TargetBuilder getVisibleResourceOutputs(CompileContext context, boolean tests) { + private @NotNull List getVisibleResourceOutputs(CompileContext context, boolean tests) { List resourceOutputs = new ArrayList<>(); JpsJavaDependenciesEnumerator enumerator = JpsJavaExtensionService.dependencies(myTarget.getModule()). includedIn(JpsJavaClasspathKind.compile(tests)). diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyResourceRootDescriptor.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyResourceRootDescriptor.java index b85cd38818fc..47e9bdc05647 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyResourceRootDescriptor.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovyResourceRootDescriptor.java @@ -9,7 +9,7 @@ import java.io.File; import java.io.FileFilter; import java.util.Set; -class GroovyResourceRootDescriptor extends BuildRootDescriptor { +final class GroovyResourceRootDescriptor extends BuildRootDescriptor { private final CheckResourcesTarget myTarget; private final ResourceRootDescriptor myDescriptor; @@ -24,8 +24,7 @@ class GroovyResourceRootDescriptor extends BuildRootDescriptor { } @Override - @NotNull - public FileFilter createFileFilter() { + public @NotNull FileFilter createFileFilter() { return myDescriptor.createFileFilter(); } diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovycOutputParser.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovycOutputParser.java index be9d20dfefe3..2cf6ecb78740 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovycOutputParser.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/GroovycOutputParser.java @@ -1,4 +1,4 @@ -// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.jps.incremental.groovy; import com.intellij.execution.process.ProcessOutputTypes; @@ -255,7 +255,7 @@ public class GroovycOutputParser { final Collection changedSources, Collection finalOutputs, Map class2Src, - @Nullable final String encoding, + final @Nullable String encoding, List patchers, String classpath) throws IOException { File tempFile = FileUtil.createTempFile("ideaGroovyToCompile", ".txt", true); diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/InProcessGroovyc.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/InProcessGroovyc.java index 44c61b83120f..51b1ca39acf9 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/InProcessGroovyc.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/InProcessGroovyc.java @@ -1,4 +1,4 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.jps.incremental.groovy; import com.intellij.execution.process.ProcessOutputTypes; @@ -91,11 +91,10 @@ final class InProcessGroovyc implements GroovycFlavor { return waitForStubGeneration(future, mailbox, parser, loader); } - @Nullable - private static GroovycContinuation waitForStubGeneration(Future future, - LinkedBlockingQueue mailbox, - GroovycOutputParser parser, - JointCompilationClassLoader loader) throws InterruptedException { + private static @Nullable GroovycContinuation waitForStubGeneration(Future future, + LinkedBlockingQueue mailbox, + GroovycOutputParser parser, + JointCompilationClassLoader loader) throws InterruptedException { while (true) { Object msg = mailbox.poll(1, TimeUnit.MINUTES); if (GROOVYC_FINISHED.equals(msg)) { @@ -116,15 +115,13 @@ final class InProcessGroovyc implements GroovycFlavor { } } - @NotNull - private static GroovycContinuation createContinuation(Future future, - @NotNull Queue mailbox, - GroovycOutputParser parser, - @NotNull JointCompilationClassLoader loader) { + private static @NotNull GroovycContinuation createContinuation(Future future, + @NotNull Queue mailbox, + GroovycOutputParser parser, + @NotNull JointCompilationClassLoader loader) { return new GroovycContinuation() { - @NotNull @Override - public GroovyCompilerResult continueCompilation() throws Exception { + public @NotNull GroovyCompilerResult continueCompilation() throws Exception { loader.resetCache(); parser.onContinuation(); mailbox.offer(GroovyRtConstants.JAVAC_COMPLETED); @@ -232,8 +229,7 @@ final class InProcessGroovyc implements GroovycFlavor { return null; } - @Nullable - static String evaluatePathToGroovyJarForParentClassloader(Collection compilationClassPath) { + static @Nullable String evaluatePathToGroovyJarForParentClassloader(Collection compilationClassPath) { if (!"true".equals(System.getProperty("groovyc.reuse.compiler.classes", "true"))) { return null; } @@ -347,10 +343,9 @@ final class InProcessGroovyc implements GroovycFlavor { return result; } - @NotNull - private static PrintStream createStream(@NotNull GroovycOutputParser parser, - @NotNull Key type, - @Nullable("null means not overridden") PrintStream overridden) throws IOException { + private static @NotNull PrintStream createStream(@NotNull GroovycOutputParser parser, + @NotNull Key type, + @Nullable("null means not overridden") PrintStream overridden) throws IOException { final Thread thread = Thread.currentThread(); OutputStream out = new OutputStream() { ByteArrayOutputStream line = new ByteArrayOutputStream(); diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/JpsGroovySettings.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/JpsGroovySettings.java index e167ddcb47ec..da916b141715 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/JpsGroovySettings.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/JpsGroovySettings.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2013 JetBrains s.r.o. - * - * 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. - */ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.jps.incremental.groovy; import com.intellij.util.xmlb.annotations.Tag; @@ -54,14 +40,12 @@ public class JpsGroovySettings extends JpsElementBase { JpsJavaCompilerConfigurationSerializer.readExcludes(excludes, myExcludeFromStubGeneration); } - @NotNull @Override - public JpsGroovySettings createCopy() { + public @NotNull JpsGroovySettings createCopy() { return new JpsGroovySettings(this); } - @NotNull - public static JpsGroovySettings getSettings(@NotNull JpsProject project) { + public static @NotNull JpsGroovySettings getSettings(@NotNull JpsProject project) { JpsGroovySettings settings = project.getContainer().getChild(ROLE); return settings == null ? new JpsGroovySettings() : settings; }