From f72064018f3114524acee8e9aecb2b860a1b7e03 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 9 Dec 2021 10:14:15 +0100
Subject: [PATCH] rename INode fcts -> nodeChildren, nodeOffspring

---
 Core/Simulation/ISimulation.cpp               |   2 +-
 Core/Simulation/ISimulation.h                 |   2 +-
 Device/Beam/Beam.cpp                          |   2 +-
 Device/Beam/Beam.h                            |   2 +-
 Device/Detector/IDetector.cpp                 |   2 +-
 Device/Detector/IDetector.h                   |   2 +-
 Device/Instrument/Instrument.cpp              |   2 +-
 Device/Instrument/Instrument.h                |   2 +-
 .../ConvolutionDetectorResolution.cpp         |   2 +-
 .../ConvolutionDetectorResolution.h           |   2 +-
 GUI/Model/Session/SessionItem.cpp             |   2 +-
 GUI/Model/Session/SessionItem.h               |   2 +-
 GUI/View/Projection/ProjectionsPlot.cpp       |   2 +-
 .../Projection/SaveProjectionsAssistant.cpp   |   2 +-
 Param/Node/INode.cpp                          |   8 +-
 Param/Node/INode.h                            |   6 +-
 Param/Node/NodeUtils.h                        |   4 +-
 Sample/Aggregate/Interference1DLattice.cpp    |   2 +-
 Sample/Aggregate/Interference1DLattice.h      |   2 +-
 Sample/Aggregate/Interference2DLattice.cpp    |   2 +-
 Sample/Aggregate/Interference2DLattice.h      |   2 +-
 .../Aggregate/Interference2DParaCrystal.cpp   |   2 +-
 Sample/Aggregate/Interference2DParaCrystal.h  |   2 +-
 .../Aggregate/Interference2DSuperLattice.cpp  |   2 +-
 Sample/Aggregate/Interference2DSuperLattice.h |   2 +-
 Sample/Aggregate/Interference3DLattice.cpp    |   2 +-
 Sample/Aggregate/Interference3DLattice.h      |   2 +-
 .../Aggregate/InterferenceFinite2DLattice.cpp |   2 +-
 .../Aggregate/InterferenceFinite2DLattice.h   |   2 +-
 .../Aggregate/InterferenceFinite3DLattice.cpp |   2 +-
 .../Aggregate/InterferenceFinite3DLattice.h   |   2 +-
 .../InterferenceRadialParaCrystal.cpp         |   2 +-
 .../Aggregate/InterferenceRadialParaCrystal.h |   2 +-
 Sample/Aggregate/ParticleLayout.cpp           |   2 +-
 Sample/Aggregate/ParticleLayout.h             |   2 +-
 Sample/Interface/LayerInterface.cpp           |   2 +-
 Sample/Interface/LayerInterface.h             |   2 +-
 Sample/Multilayer/Layer.cpp                   |   2 +-
 Sample/Multilayer/Layer.h                     |   2 +-
 Sample/Multilayer/MultiLayer.cpp              |   2 +-
 Sample/Multilayer/MultiLayer.h                |   2 +-
 Sample/Particle/Crystal.cpp                   |   2 +-
 Sample/Particle/Crystal.h                     |   2 +-
 Sample/Particle/IParticle.cpp                 |   2 +-
 Sample/Particle/IParticle.h                   |   2 +-
 Sample/Particle/MesoCrystal.cpp               |   4 +-
 Sample/Particle/MesoCrystal.h                 |   2 +-
 Sample/Particle/Particle.cpp                  |   4 +-
 Sample/Particle/Particle.h                    |   2 +-
 Sample/Particle/ParticleComposition.cpp       |   4 +-
 Sample/Particle/ParticleComposition.h         |   2 +-
 Sample/Particle/ParticleCoreShell.cpp         |   4 +-
 Sample/Particle/ParticleCoreShell.h           |   2 +-
 Sample/Scattering/ISampleNode.cpp             |   2 +-
 Tests/Unit/Core/GISASSimulationTest.cpp       |   6 +-
 Tests/Unit/Core/ParticleLayoutTest.cpp        |   6 +-
 Tests/Unit/Param/INodeTest.cpp                |   6 +-
 Tests/Unit/Sample/MultiLayerTest.cpp          |   2 +-
 Tests/Unit/Sample/ParticleCompositionTest.cpp |   2 +-
 auto/Wrap/doxygenCore.i                       |   2 +-
 auto/Wrap/doxygenDevice.i                     |   8 +-
 auto/Wrap/doxygenParam.i                      |  24 +-
 auto/Wrap/doxygenSample.i                     |  36 +-
 auto/Wrap/libBornAgainCore.py                 |   8 +-
 auto/Wrap/libBornAgainCore_wrap.cpp           |  12 +-
 auto/Wrap/libBornAgainDevice.py               |  24 +-
 auto/Wrap/libBornAgainDevice_wrap.cpp         |  36 +-
 auto/Wrap/libBornAgainParam.py                |  42 ++-
 auto/Wrap/libBornAgainParam_wrap.cpp          | 124 ++++---
 auto/Wrap/libBornAgainParam_wrap.h            |   2 +-
 auto/Wrap/libBornAgainSample.py               | 136 ++++----
 auto/Wrap/libBornAgainSample_wrap.cpp         | 312 +++++++++---------
 auto/Wrap/libBornAgainSample_wrap.h           |   6 +-
 73 files changed, 482 insertions(+), 440 deletions(-)

diff --git a/Core/Simulation/ISimulation.cpp b/Core/Simulation/ISimulation.cpp
index a751c1e9dd2..b4535769411 100644
--- a/Core/Simulation/ISimulation.cpp
+++ b/Core/Simulation/ISimulation.cpp
@@ -252,7 +252,7 @@ void ISimulation::setBackground(const IBackground& bg)
     m_background.reset(bg.clone());
 }
 
-std::vector<const INode*> ISimulation::getChildren() const
+std::vector<const INode*> ISimulation::nodeChildren() const
 {
     std::vector<const INode*> result;
     result << &instrument();
diff --git a/Core/Simulation/ISimulation.h b/Core/Simulation/ISimulation.h
index fc148e6a4d5..31f1e501a4d 100644
--- a/Core/Simulation/ISimulation.h
+++ b/Core/Simulation/ISimulation.h
@@ -81,7 +81,7 @@ public:
     void subscribe(const std::function<bool(size_t)>& inform);
     void setTerminalProgressMonitor();
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     std::string unitOfParameter(ParameterDistribution::WhichParameter which) const;
 
diff --git a/Device/Beam/Beam.cpp b/Device/Beam/Beam.cpp
index 86f7ebf11a1..7a7a516b4db 100644
--- a/Device/Beam/Beam.cpp
+++ b/Device/Beam/Beam.cpp
@@ -163,7 +163,7 @@ Eigen::Matrix2cd Beam::getPolarization() const
     return result;
 }
 
-std::vector<const INode*> Beam::getChildren() const
+std::vector<const INode*> Beam::nodeChildren() const
 {
     if (m_shape_factor)
         return {m_shape_factor.get()};
diff --git a/Device/Beam/Beam.h b/Device/Beam/Beam.h
index a09f52cd1d3..bebf24eb424 100644
--- a/Device/Beam/Beam.h
+++ b/Device/Beam/Beam.h
@@ -41,7 +41,7 @@ public:
 
     static Beam horizontalBeam();
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     //! Returns the beam intensity in neutrons/sec
     double intensity() const { return m_intensity; }
diff --git a/Device/Detector/IDetector.cpp b/Device/Detector/IDetector.cpp
index 909e4328117..42bc5fef8f6 100644
--- a/Device/Detector/IDetector.cpp
+++ b/Device/Detector/IDetector.cpp
@@ -251,7 +251,7 @@ std::pair<double, double> IDetector::regionOfInterestBounds(size_t iAxis) const
     return m_axes[iAxis]->bounds();
 }
 
-std::vector<const INode*> IDetector::getChildren() const
+std::vector<const INode*> IDetector::nodeChildren() const
 {
     return std::vector<const INode*>() << &m_detection_properties << m_detector_resolution;
 }
diff --git a/Device/Detector/IDetector.h b/Device/Detector/IDetector.h
index e3f8d302f49..0043ef6522f 100644
--- a/Device/Detector/IDetector.h
+++ b/Device/Detector/IDetector.h
@@ -73,7 +73,7 @@ public:
     //! Returns detector masks container
     virtual const DetectorMask* detectorMask() const = 0;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     //! Iterate over all points within "region of interest", no matter whether they are masked or
     //! not. If no region of interest is explicitly defined, then the whole detector is taken as
diff --git a/Device/Instrument/Instrument.cpp b/Device/Instrument/Instrument.cpp
index d3f7d716318..821a9f2e061 100644
--- a/Device/Instrument/Instrument.cpp
+++ b/Device/Instrument/Instrument.cpp
@@ -70,7 +70,7 @@ void Instrument::initDetector()
     m_detector->setDetectorNormal(beam().direction().zReflected());
 }
 
-std::vector<const INode*> Instrument::getChildren() const
+std::vector<const INode*> Instrument::nodeChildren() const
 {
     std::vector<const INode*> result;
     result.push_back(m_beam.get());
diff --git a/Device/Instrument/Instrument.h b/Device/Instrument/Instrument.h
index a87aa88887e..f775f38882a 100644
--- a/Device/Instrument/Instrument.h
+++ b/Device/Instrument/Instrument.h
@@ -61,7 +61,7 @@ public:
                        double analyzer_transmission);
     PolMatrices polarizerPair() const;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     CoordSystem2D* createScatteringCoords() const;
 
diff --git a/Device/Resolution/ConvolutionDetectorResolution.cpp b/Device/Resolution/ConvolutionDetectorResolution.cpp
index e264e428354..b1a069da750 100644
--- a/Device/Resolution/ConvolutionDetectorResolution.cpp
+++ b/Device/Resolution/ConvolutionDetectorResolution.cpp
@@ -43,7 +43,7 @@ ConvolutionDetectorResolution* ConvolutionDetectorResolution::clone() const
     return new ConvolutionDetectorResolution(*this);
 }
 
-std::vector<const INode*> ConvolutionDetectorResolution::getChildren() const
+std::vector<const INode*> ConvolutionDetectorResolution::nodeChildren() const
 {
     return std::vector<const INode*>() << m_res_function_2d;
 }
diff --git a/Device/Resolution/ConvolutionDetectorResolution.h b/Device/Resolution/ConvolutionDetectorResolution.h
index 60108da9e76..94c2102986b 100644
--- a/Device/Resolution/ConvolutionDetectorResolution.h
+++ b/Device/Resolution/ConvolutionDetectorResolution.h
@@ -50,7 +50,7 @@ public:
 
     const IResolutionFunction2D* getResolutionFunction2D() const;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
 protected:
     ConvolutionDetectorResolution(const ConvolutionDetectorResolution& other);
diff --git a/GUI/Model/Session/SessionItem.cpp b/GUI/Model/Session/SessionItem.cpp
index 20cdde4cdd1..1b9c5dc0411 100644
--- a/GUI/Model/Session/SessionItem.cpp
+++ b/GUI/Model/Session/SessionItem.cpp
@@ -124,7 +124,7 @@ SessionItem* SessionItem::getChildOfType(const QString& type) const
 
 //! Returns a vector of all children of the given type.
 
-QVector<SessionItem*> SessionItem::getChildrenOfType(const QString& model_type) const
+QVector<SessionItem*> SessionItem::nodeChildrenOfType(const QString& model_type) const
 {
     QVector<SessionItem*> result;
     for (auto* child : m_children)
diff --git a/GUI/Model/Session/SessionItem.h b/GUI/Model/Session/SessionItem.h
index 17a30899668..16f0f98b3b9 100644
--- a/GUI/Model/Session/SessionItem.h
+++ b/GUI/Model/Session/SessionItem.h
@@ -221,7 +221,7 @@ public:
     SessionItem* childAt(int row) const;
     int rowOfChild(SessionItem* child) const;
     SessionItem* getChildOfType(const QString& type) const;
-    QVector<SessionItem*> getChildrenOfType(const QString& model_type) const;
+    QVector<SessionItem*> nodeChildrenOfType(const QString& model_type) const;
     template <typename T> QVector<T*> childrenOfType() const;
     template <typename T> T* firstChildOfType() const;
     SessionItem* takeRow(int row);
diff --git a/GUI/View/Projection/ProjectionsPlot.cpp b/GUI/View/Projection/ProjectionsPlot.cpp
index c219dcd15de..bc7e4cb0780 100644
--- a/GUI/View/Projection/ProjectionsPlot.cpp
+++ b/GUI/View/Projection/ProjectionsPlot.cpp
@@ -140,7 +140,7 @@ ProjectionContainerItem* ProjectionsPlot::projectionContainerItem()
 
 QVector<SessionItem*> ProjectionsPlot::projectionItems()
 {
-    return projectionContainerItem()->getChildrenOfType(m_projectionType);
+    return projectionContainerItem()->nodeChildrenOfType(m_projectionType);
 }
 
 QCPGraph* ProjectionsPlot::graphForItem(SessionItem* item)
diff --git a/GUI/View/Projection/SaveProjectionsAssistant.cpp b/GUI/View/Projection/SaveProjectionsAssistant.cpp
index f33e8ff6289..9974a1169f9 100644
--- a/GUI/View/Projection/SaveProjectionsAssistant.cpp
+++ b/GUI/View/Projection/SaveProjectionsAssistant.cpp
@@ -167,7 +167,7 @@ SaveProjectionsAssistant::projectionsData(const QString& projectionsType,
 QVector<SessionItem*> SaveProjectionsAssistant::projectionItems(const QString& projectionsType,
                                                                 IntensityDataItem* intensityItem)
 {
-    auto result = intensityItem->projectionContainerItem()->getChildrenOfType(projectionsType);
+    auto result = intensityItem->projectionContainerItem()->nodeChildrenOfType(projectionsType);
     std::sort(result.begin(), result.end(),
               projectionsType == HorizontalLineItem::M_TYPE ? horiz_less_posy : vert_less_posx);
     return result;
diff --git a/Param/Node/INode.cpp b/Param/Node/INode.cpp
index 063cf352893..e010caa4491 100644
--- a/Param/Node/INode.cpp
+++ b/Param/Node/INode.cpp
@@ -45,17 +45,17 @@ INode::INode(const NodeMeta& meta, std::vector<double> PValues) : m_P(std::move(
     }
 }
 
-std::vector<const INode*> INode::getChildren() const
+std::vector<const INode*> INode::nodeChildren() const
 {
     return {};
 }
 
-std::vector<const INode*> INode::progeny() const
+std::vector<const INode*> INode::nodeOffspring() const
 {
     std::vector<const INode*> result;
     result.push_back(this);
-    for (const auto* child : getChildren()) {
-        for (const auto* p : child->progeny())
+    for (const auto* child : nodeChildren()) {
+        for (const auto* p : child->nodeOffspring())
             result.push_back(p);
     }
     return result;
diff --git a/Param/Node/INode.h b/Param/Node/INode.h
index 577e552f96c..88c5fa6708f 100644
--- a/Param/Node/INode.h
+++ b/Param/Node/INode.h
@@ -59,17 +59,17 @@ public:
     virtual std::string className() const = 0;
 
     //! Returns all children.
-    virtual std::vector<const INode*> getChildren() const;
+    virtual std::vector<const INode*> nodeChildren() const;
 
     //! Returns all descendants.
-    std::vector<const INode*> progeny() const;
+    std::vector<const INode*> nodeOffspring() const;
 
 protected:
     std::vector<double> m_P;
 };
 
 //  ************************************************************************************************
-//  vector concatenation, for use in getChildren functions
+//  vector concatenation, for use in nodeChildren functions
 //  ************************************************************************************************
 
 #ifndef SWIG
diff --git a/Param/Node/NodeUtils.h b/Param/Node/NodeUtils.h
index 6eea6d0a083..1149d9c2b00 100644
--- a/Param/Node/NodeUtils.h
+++ b/Param/Node/NodeUtils.h
@@ -30,7 +30,7 @@ namespace NodeUtils {
 template <typename T> std::vector<const T*> ChildNodesOfType(const INode& node)
 {
     std::vector<const T*> result;
-    for (const auto& p_child : node.getChildren()) {
+    for (const auto& p_child : node.nodeChildren()) {
         if (const auto* t = dynamic_cast<const T*>(p_child))
             result.push_back(t);
     }
@@ -48,7 +48,7 @@ template <typename T> const T* OnlyChildOfType(const INode& node)
 template <typename T> std::vector<const T*> AllDescendantsOfType(const INode& node)
 {
     std::vector<const T*> result;
-    for (const auto* child : node.getChildren()) {
+    for (const auto* child : node.nodeChildren()) {
         ASSERT(child);
         if (const auto* t = dynamic_cast<const T*>(child))
             result.push_back(t);
diff --git a/Sample/Aggregate/Interference1DLattice.cpp b/Sample/Aggregate/Interference1DLattice.cpp
index b9649005f11..bf4fc6d633b 100644
--- a/Sample/Aggregate/Interference1DLattice.cpp
+++ b/Sample/Aggregate/Interference1DLattice.cpp
@@ -60,7 +60,7 @@ void Interference1DLattice::setDecayFunction(const IFTDecayFunction1D& decay)
     m_na = std::max(m_na, min_points);
 }
 
-std::vector<const INode*> Interference1DLattice::getChildren() const
+std::vector<const INode*> Interference1DLattice::nodeChildren() const
 {
     return std::vector<const INode*>() << m_decay;
 }
diff --git a/Sample/Aggregate/Interference1DLattice.h b/Sample/Aggregate/Interference1DLattice.h
index ea1209edfbf..da971f4dc55 100644
--- a/Sample/Aggregate/Interference1DLattice.h
+++ b/Sample/Aggregate/Interference1DLattice.h
@@ -37,7 +37,7 @@ public:
     double getLength() const { return m_length; }
     double getXi() const { return m_xi; }
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
 private:
     double iff_without_dw(R3 q) const override;
diff --git a/Sample/Aggregate/Interference2DLattice.cpp b/Sample/Aggregate/Interference2DLattice.cpp
index 933ddd193d0..bf46e747312 100644
--- a/Sample/Aggregate/Interference2DLattice.cpp
+++ b/Sample/Aggregate/Interference2DLattice.cpp
@@ -89,7 +89,7 @@ double Interference2DLattice::getParticleDensity() const
     return area == 0.0 ? 0.0 : 1.0 / area;
 }
 
-std::vector<const INode*> Interference2DLattice::getChildren() const
+std::vector<const INode*> Interference2DLattice::nodeChildren() const
 {
     return std::vector<const INode*>() << m_decay << m_lattice;
 }
diff --git a/Sample/Aggregate/Interference2DLattice.h b/Sample/Aggregate/Interference2DLattice.h
index 05c21b3a6fe..634e8afca45 100644
--- a/Sample/Aggregate/Interference2DLattice.h
+++ b/Sample/Aggregate/Interference2DLattice.h
@@ -43,7 +43,7 @@ public:
     //! Returns the particle density associated with this 2d lattice
     double getParticleDensity() const override;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
 private:
     double iff_without_dw(R3 q) const override;
diff --git a/Sample/Aggregate/Interference2DParaCrystal.cpp b/Sample/Aggregate/Interference2DParaCrystal.cpp
index 75b41b9c0aa..f230c1ea06d 100644
--- a/Sample/Aggregate/Interference2DParaCrystal.cpp
+++ b/Sample/Aggregate/Interference2DParaCrystal.cpp
@@ -67,7 +67,7 @@ double Interference2DParaCrystal::getParticleDensity() const
     return area == 0.0 ? 0.0 : 1.0 / area;
 }
 
-std::vector<const INode*> Interference2DParaCrystal::getChildren() const
+std::vector<const INode*> Interference2DParaCrystal::nodeChildren() const
 {
     return std::vector<const INode*>() << m_pdf1 << m_pdf2 << m_lattice;
 }
diff --git a/Sample/Aggregate/Interference2DParaCrystal.h b/Sample/Aggregate/Interference2DParaCrystal.h
index 1a3374be92a..e32096dd1b8 100644
--- a/Sample/Aggregate/Interference2DParaCrystal.h
+++ b/Sample/Aggregate/Interference2DParaCrystal.h
@@ -55,7 +55,7 @@ public:
 
     double getParticleDensity() const override;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     const IFTDistribution2D* pdf1() const { return m_pdf1.get(); }
 
diff --git a/Sample/Aggregate/Interference2DSuperLattice.cpp b/Sample/Aggregate/Interference2DSuperLattice.cpp
index 2d0e8d7675b..956639617ac 100644
--- a/Sample/Aggregate/Interference2DSuperLattice.cpp
+++ b/Sample/Aggregate/Interference2DSuperLattice.cpp
@@ -92,7 +92,7 @@ const Lattice2D& Interference2DSuperLattice::lattice() const
     return *m_lattice;
 }
 
-std::vector<const INode*> Interference2DSuperLattice::getChildren() const
+std::vector<const INode*> Interference2DSuperLattice::nodeChildren() const
 {
     return std::vector<const INode*>() << m_lattice << m_substructure;
 }
diff --git a/Sample/Aggregate/Interference2DSuperLattice.h b/Sample/Aggregate/Interference2DSuperLattice.h
index fda8ef9a80b..ffcce606710 100644
--- a/Sample/Aggregate/Interference2DSuperLattice.h
+++ b/Sample/Aggregate/Interference2DSuperLattice.h
@@ -46,7 +46,7 @@ public:
 
     const Lattice2D& lattice() const;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
 private:
     double iff_without_dw(R3 q) const override;
diff --git a/Sample/Aggregate/Interference3DLattice.cpp b/Sample/Aggregate/Interference3DLattice.cpp
index 16abbc3ce4b..c61af507b95 100644
--- a/Sample/Aggregate/Interference3DLattice.cpp
+++ b/Sample/Aggregate/Interference3DLattice.cpp
@@ -50,7 +50,7 @@ const Lattice3D& Interference3DLattice::lattice() const
     return m_lattice;
 }
 
-std::vector<const INode*> Interference3DLattice::getChildren() const
+std::vector<const INode*> Interference3DLattice::nodeChildren() const
 {
     return {};
 }
diff --git a/Sample/Aggregate/Interference3DLattice.h b/Sample/Aggregate/Interference3DLattice.h
index 06edd0aaa66..b1fa86660c0 100644
--- a/Sample/Aggregate/Interference3DLattice.h
+++ b/Sample/Aggregate/Interference3DLattice.h
@@ -39,7 +39,7 @@ public:
 
     bool supportsMultilayer() const override { return false; }
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
 private:
     double iff_without_dw(R3 q) const override;
diff --git a/Sample/Aggregate/InterferenceFinite2DLattice.cpp b/Sample/Aggregate/InterferenceFinite2DLattice.cpp
index 1a338f14574..68e84d0d6a7 100644
--- a/Sample/Aggregate/InterferenceFinite2DLattice.cpp
+++ b/Sample/Aggregate/InterferenceFinite2DLattice.cpp
@@ -62,7 +62,7 @@ double InterferenceFinite2DLattice::getParticleDensity() const
     return area == 0.0 ? 0.0 : 1.0 / area;
 }
 
-std::vector<const INode*> InterferenceFinite2DLattice::getChildren() const
+std::vector<const INode*> InterferenceFinite2DLattice::nodeChildren() const
 {
     return std::vector<const INode*>() << m_lattice;
 }
diff --git a/Sample/Aggregate/InterferenceFinite2DLattice.h b/Sample/Aggregate/InterferenceFinite2DLattice.h
index 42ed49c8b0f..1b747e7ac14 100644
--- a/Sample/Aggregate/InterferenceFinite2DLattice.h
+++ b/Sample/Aggregate/InterferenceFinite2DLattice.h
@@ -42,7 +42,7 @@ public:
     //! Returns the particle density associated with this 2d lattice
     double getParticleDensity() const override;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
 private:
     double iff_without_dw(R3 q) const override;
diff --git a/Sample/Aggregate/InterferenceFinite3DLattice.cpp b/Sample/Aggregate/InterferenceFinite3DLattice.cpp
index 66ea32f8734..c9b42630d38 100644
--- a/Sample/Aggregate/InterferenceFinite3DLattice.cpp
+++ b/Sample/Aggregate/InterferenceFinite3DLattice.cpp
@@ -42,7 +42,7 @@ const Lattice3D& InterferenceFinite3DLattice::lattice() const
     return *m_lattice;
 }
 
-std::vector<const INode*> InterferenceFinite3DLattice::getChildren() const
+std::vector<const INode*> InterferenceFinite3DLattice::nodeChildren() const
 {
     return std::vector<const INode*>() << m_lattice;
 }
diff --git a/Sample/Aggregate/InterferenceFinite3DLattice.h b/Sample/Aggregate/InterferenceFinite3DLattice.h
index 4e8568df696..7e5d1f22d1e 100644
--- a/Sample/Aggregate/InterferenceFinite3DLattice.h
+++ b/Sample/Aggregate/InterferenceFinite3DLattice.h
@@ -39,7 +39,7 @@ public:
 
     bool supportsMultilayer() const override { return false; }
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
 private:
     double iff_without_dw(R3 q) const override;
diff --git a/Sample/Aggregate/InterferenceRadialParaCrystal.cpp b/Sample/Aggregate/InterferenceRadialParaCrystal.cpp
index 1f3259d5146..63b797d928b 100644
--- a/Sample/Aggregate/InterferenceRadialParaCrystal.cpp
+++ b/Sample/Aggregate/InterferenceRadialParaCrystal.cpp
@@ -85,7 +85,7 @@ void InterferenceRadialParaCrystal::setProbabilityDistribution(const IFTDistribu
     m_pdf.reset(pdf.clone());
 }
 
-std::vector<const INode*> InterferenceRadialParaCrystal::getChildren() const
+std::vector<const INode*> InterferenceRadialParaCrystal::nodeChildren() const
 {
     return std::vector<const INode*>() << m_pdf;
 }
diff --git a/Sample/Aggregate/InterferenceRadialParaCrystal.h b/Sample/Aggregate/InterferenceRadialParaCrystal.h
index ef690861f0e..0407c12d879 100644
--- a/Sample/Aggregate/InterferenceRadialParaCrystal.h
+++ b/Sample/Aggregate/InterferenceRadialParaCrystal.h
@@ -45,7 +45,7 @@ public:
 
     double dampingLength() const { return m_damping_length; }
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     double randomSample() const { return m_pdf->createSampler()->randomSample(); }
 
diff --git a/Sample/Aggregate/ParticleLayout.cpp b/Sample/Aggregate/ParticleLayout.cpp
index 3e300eee5a3..434dc242343 100644
--- a/Sample/Aggregate/ParticleLayout.cpp
+++ b/Sample/Aggregate/ParticleLayout.cpp
@@ -112,7 +112,7 @@ void ParticleLayout::setTotalParticleSurfaceDensity(double particle_density)
     m_total_particle_density = particle_density;
 }
 
-std::vector<const INode*> ParticleLayout::getChildren() const
+std::vector<const INode*> ParticleLayout::nodeChildren() const
 {
     std::vector<const INode*> result;
     for (const auto* particle : m_particles)
diff --git a/Sample/Aggregate/ParticleLayout.h b/Sample/Aggregate/ParticleLayout.h
index 3cb75d14e10..a90b845f7af 100644
--- a/Sample/Aggregate/ParticleLayout.h
+++ b/Sample/Aggregate/ParticleLayout.h
@@ -52,7 +52,7 @@ public:
     double totalParticleSurfaceDensity() const;
     void setTotalParticleSurfaceDensity(double particle_density);
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     //! Returns the relative weight of this layout
     double weight() const { return m_weight; }
diff --git a/Sample/Interface/LayerInterface.cpp b/Sample/Interface/LayerInterface.cpp
index 3443ed50ba3..e0fedf19bc9 100644
--- a/Sample/Interface/LayerInterface.cpp
+++ b/Sample/Interface/LayerInterface.cpp
@@ -46,7 +46,7 @@ void LayerInterface::setRoughness(const LayerRoughness& roughness)
     m_roughness.reset(roughness.clone());
 }
 
-std::vector<const INode*> LayerInterface::getChildren() const
+std::vector<const INode*> LayerInterface::nodeChildren() const
 {
     return std::vector<const INode*>() << m_roughness;
 }
diff --git a/Sample/Interface/LayerInterface.h b/Sample/Interface/LayerInterface.h
index eefff6fc2c2..d8b98dec739 100644
--- a/Sample/Interface/LayerInterface.h
+++ b/Sample/Interface/LayerInterface.h
@@ -54,7 +54,7 @@ public:
 
     const Layer* bottomLayer() const;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
 private:
     void setLayersTopBottom(const Layer* top_layer, const Layer* bottom_layer);
diff --git a/Sample/Multilayer/Layer.cpp b/Sample/Multilayer/Layer.cpp
index 13e8d30b869..0598da41cd0 100644
--- a/Sample/Multilayer/Layer.cpp
+++ b/Sample/Multilayer/Layer.cpp
@@ -51,7 +51,7 @@ std::vector<const ParticleLayout*> Layer::layouts() const
     return result;
 }
 
-std::vector<const INode*> Layer::getChildren() const
+std::vector<const INode*> Layer::nodeChildren() const
 {
     std::vector<const INode*> result;
     for (auto* layout : m_layouts)
diff --git a/Sample/Multilayer/Layer.h b/Sample/Multilayer/Layer.h
index 41611f54fa7..7f163136953 100644
--- a/Sample/Multilayer/Layer.h
+++ b/Sample/Multilayer/Layer.h
@@ -42,7 +42,7 @@ public:
     size_t numberOfLayouts() const { return m_layouts.size(); }
     std::vector<const ParticleLayout*> layouts() const;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     void setNumberOfSlices(unsigned int n_slices) { m_n_slices = n_slices; }
     unsigned int numberOfSlices() const { return m_n_slices; }
diff --git a/Sample/Multilayer/MultiLayer.cpp b/Sample/Multilayer/MultiLayer.cpp
index c014ca9f686..f0f2b111f28 100644
--- a/Sample/Multilayer/MultiLayer.cpp
+++ b/Sample/Multilayer/MultiLayer.cpp
@@ -113,7 +113,7 @@ void MultiLayer::setRoughnessModel(RoughnessModel roughnessModel)
     m_roughness_model = roughnessModel;
 }
 
-std::vector<const INode*> MultiLayer::getChildren() const
+std::vector<const INode*> MultiLayer::nodeChildren() const
 {
     std::vector<const INode*> ret;
     const size_t N = m_layers.size();
diff --git a/Sample/Multilayer/MultiLayer.h b/Sample/Multilayer/MultiLayer.h
index 6846f647c78..5b01b888994 100644
--- a/Sample/Multilayer/MultiLayer.h
+++ b/Sample/Multilayer/MultiLayer.h
@@ -71,7 +71,7 @@ public:
     //! Returns the external field applied to the multilayer (units: A/m)
     R3 externalField() const { return m_ext_field; }
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     void setSampleName(const std::string& name) { m_sample_name = name; }
     const std::string& sampleName() const { return m_sample_name; }
diff --git a/Sample/Particle/Crystal.cpp b/Sample/Particle/Crystal.cpp
index 20c137052dc..ac3d2e55e4b 100644
--- a/Sample/Particle/Crystal.cpp
+++ b/Sample/Particle/Crystal.cpp
@@ -77,7 +77,7 @@ Lattice3D Crystal::rotatedLattice(const IRotation* rotation) const
     return m_lattice.rotated(rotation->getRotMatrix());
 }
 
-std::vector<const INode*> Crystal::getChildren() const
+std::vector<const INode*> Crystal::nodeChildren() const
 {
     return std::vector<const INode*>() << m_basis << &m_lattice;
 }
diff --git a/Sample/Particle/Crystal.h b/Sample/Particle/Crystal.h
index e7926a1f3a1..d9d190fabf4 100644
--- a/Sample/Particle/Crystal.h
+++ b/Sample/Particle/Crystal.h
@@ -50,7 +50,7 @@ public:
 
     Lattice3D rotatedLattice(const IRotation* rotation = nullptr) const; // TODO provide Py example
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
     const IParticle* basis() const;
 
 private:
diff --git a/Sample/Particle/IParticle.cpp b/Sample/Particle/IParticle.cpp
index 87e9f1c1e63..ce3c343da35 100644
--- a/Sample/Particle/IParticle.cpp
+++ b/Sample/Particle/IParticle.cpp
@@ -54,7 +54,7 @@ void IParticle::rotate(const IRotation& rotation)
     m_position = rotation.transformed(m_position);
 }
 
-std::vector<const INode*> IParticle::getChildren() const
+std::vector<const INode*> IParticle::nodeChildren() const
 {
     return std::vector<const INode*>() << m_rotation;
 }
diff --git a/Sample/Particle/IParticle.h b/Sample/Particle/IParticle.h
index e3e43e41578..90a4ce3a00e 100644
--- a/Sample/Particle/IParticle.h
+++ b/Sample/Particle/IParticle.h
@@ -77,7 +77,7 @@ public:
     //! Rotates the particle
     void rotate(const IRotation& rotation);
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     //! Decompose in constituent IParticle objects
     virtual SafePointerVector<IParticle> decompose() const;
diff --git a/Sample/Particle/MesoCrystal.cpp b/Sample/Particle/MesoCrystal.cpp
index 330bb6413a7..0135b7c5127 100644
--- a/Sample/Particle/MesoCrystal.cpp
+++ b/Sample/Particle/MesoCrystal.cpp
@@ -57,10 +57,10 @@ SlicedParticle MesoCrystal::createSlicedParticle(const ZLimits& limits) const
     return result;
 }
 
-std::vector<const INode*> MesoCrystal::getChildren() const
+std::vector<const INode*> MesoCrystal::nodeChildren() const
 {
     return std::vector<const INode*>()
-           << IParticle::getChildren() << m_particle_structure << m_meso_form_factor;
+           << IParticle::nodeChildren() << m_particle_structure << m_meso_form_factor;
 }
 
 const Crystal& MesoCrystal::particleStructure() const
diff --git a/Sample/Particle/MesoCrystal.h b/Sample/Particle/MesoCrystal.h
index a9e794dccaa..69994aed022 100644
--- a/Sample/Particle/MesoCrystal.h
+++ b/Sample/Particle/MesoCrystal.h
@@ -34,7 +34,7 @@ public:
 
     SlicedParticle createSlicedParticle(const ZLimits& limits) const override;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     const IFormFactor* outerShape() const { return m_meso_form_factor.get(); }
     const Crystal& particleStructure() const;
diff --git a/Sample/Particle/Particle.cpp b/Sample/Particle/Particle.cpp
index b6be88d7b4f..70c742ffc4e 100644
--- a/Sample/Particle/Particle.cpp
+++ b/Sample/Particle/Particle.cpp
@@ -61,7 +61,7 @@ SlicedParticle Particle::createSlicedParticle(const ZLimits& limits) const
     return {std::move(sliced_ff), {{{volume, transformed_material}}}};
 }
 
-std::vector<const INode*> Particle::getChildren() const
+std::vector<const INode*> Particle::nodeChildren() const
 {
-    return std::vector<const INode*>() << IParticle::getChildren() << m_form_factor;
+    return std::vector<const INode*>() << IParticle::nodeChildren() << m_form_factor;
 }
diff --git a/Sample/Particle/Particle.h b/Sample/Particle/Particle.h
index 04d7b285027..e817129b645 100644
--- a/Sample/Particle/Particle.h
+++ b/Sample/Particle/Particle.h
@@ -35,7 +35,7 @@ public:
 
     const Material* material() const override { return &m_material; }
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     const IFormFactor* formFactor() const { return m_form_factor.get(); }
 
diff --git a/Sample/Particle/ParticleComposition.cpp b/Sample/Particle/ParticleComposition.cpp
index c14a99c5933..fbfc1c0e5de 100644
--- a/Sample/Particle/ParticleComposition.cpp
+++ b/Sample/Particle/ParticleComposition.cpp
@@ -83,9 +83,9 @@ std::vector<const IParticle*> ParticleComposition::particles() const
     return result;
 }
 
-std::vector<const INode*> ParticleComposition::getChildren() const
+std::vector<const INode*> ParticleComposition::nodeChildren() const
 {
-    std::vector<const INode*> result = IParticle::getChildren();
+    std::vector<const INode*> result = IParticle::nodeChildren();
     for (const auto& P_particle : m_particles)
         result.push_back(P_particle.get());
     return result;
diff --git a/Sample/Particle/ParticleComposition.h b/Sample/Particle/ParticleComposition.h
index fdd1e297aa6..0a180d2ce30 100644
--- a/Sample/Particle/ParticleComposition.h
+++ b/Sample/Particle/ParticleComposition.h
@@ -43,7 +43,7 @@ public:
 
     std::vector<const IParticle*> particles() const;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
     SafePointerVector<IParticle> decompose() const override;
 
diff --git a/Sample/Particle/ParticleCoreShell.cpp b/Sample/Particle/ParticleCoreShell.cpp
index cfea4194236..aa26c2a4045 100644
--- a/Sample/Particle/ParticleCoreShell.cpp
+++ b/Sample/Particle/ParticleCoreShell.cpp
@@ -85,9 +85,9 @@ SlicedParticle ParticleCoreShell::createSlicedParticle(const ZLimits& limits) co
     return result;
 }
 
-std::vector<const INode*> ParticleCoreShell::getChildren() const
+std::vector<const INode*> ParticleCoreShell::nodeChildren() const
 {
-    return std::vector<const INode*>() << IParticle::getChildren() << m_core << m_shell;
+    return std::vector<const INode*>() << IParticle::nodeChildren() << m_core << m_shell;
 }
 
 ParticleCoreShell::ParticleCoreShell() : m_shell{nullptr}, m_core{nullptr} {}
diff --git a/Sample/Particle/ParticleCoreShell.h b/Sample/Particle/ParticleCoreShell.h
index 09ce543c3b5..4a60659e8ad 100644
--- a/Sample/Particle/ParticleCoreShell.h
+++ b/Sample/Particle/ParticleCoreShell.h
@@ -39,7 +39,7 @@ public:
 
     const Particle* shellParticle() const;
 
-    std::vector<const INode*> getChildren() const override;
+    std::vector<const INode*> nodeChildren() const override;
 
 protected:
     ParticleCoreShell();
diff --git a/Sample/Scattering/ISampleNode.cpp b/Sample/Scattering/ISampleNode.cpp
index c89269919f1..8068d19ffdd 100644
--- a/Sample/Scattering/ISampleNode.cpp
+++ b/Sample/Scattering/ISampleNode.cpp
@@ -27,7 +27,7 @@ std::vector<const Material*> ISampleNode::containedMaterials() const
     std::vector<const Material*> result;
     if (const Material* p_material = material())
         result.push_back(p_material);
-    for (const auto* child : getChildren()) {
+    for (const auto* child : nodeChildren()) {
         if (const auto* sample = dynamic_cast<const ISampleNode*>(child)) {
             for (const Material* p_material : sample->containedMaterials())
                 result.push_back(p_material);
diff --git a/Tests/Unit/Core/GISASSimulationTest.cpp b/Tests/Unit/Core/GISASSimulationTest.cpp
index 395a88ba75e..e1963eb20ad 100644
--- a/Tests/Unit/Core/GISASSimulationTest.cpp
+++ b/Tests/Unit/Core/GISASSimulationTest.cpp
@@ -13,7 +13,7 @@ TEST_F(GISASSimulationTest, SimulationInitialState)
     EXPECT_EQ(nullptr, simulation.sample());
     EXPECT_EQ(0u, simulation.intensityMapSize());
     EXPECT_THROW(simulation.result(), std::runtime_error);
-    EXPECT_EQ(1u, simulation.getChildren().size());
+    EXPECT_EQ(1u, simulation.nodeChildren().size());
 }
 
 TEST_F(GISASSimulationTest, SimulationConstruction)
@@ -23,11 +23,11 @@ TEST_F(GISASSimulationTest, SimulationConstruction)
     EXPECT_NE(nullptr, simulation.sample());
     EXPECT_EQ(0u, simulation.intensityMapSize());
     EXPECT_THROW(simulation.result(), std::runtime_error);
-    EXPECT_EQ(2u, simulation.getChildren().size());
+    EXPECT_EQ(2u, simulation.nodeChildren().size());
 
     simulation.setDetectorParameters(10, -2.0, 2.0, 20, 0.0, 2.0);
     EXPECT_NE(nullptr, simulation.sample());
     EXPECT_EQ(200u, simulation.intensityMapSize());
     EXPECT_NO_THROW(simulation.result());
-    EXPECT_EQ(2u, simulation.getChildren().size());
+    EXPECT_EQ(2u, simulation.nodeChildren().size());
 }
diff --git a/Tests/Unit/Core/ParticleLayoutTest.cpp b/Tests/Unit/Core/ParticleLayoutTest.cpp
index 07162753f17..91d3db59e83 100644
--- a/Tests/Unit/Core/ParticleLayoutTest.cpp
+++ b/Tests/Unit/Core/ParticleLayoutTest.cpp
@@ -167,16 +167,16 @@ TEST_F(ParticleLayoutTest, ParticleLayoutInterference)
     EXPECT_TRUE(nullptr != p_iff);
 }
 
-TEST_F(ParticleLayoutTest, getChildren)
+TEST_F(ParticleLayoutTest, nodeChildren)
 {
     ParticleLayout layout;
-    std::vector<const INode*> children = layout.getChildren();
+    std::vector<const INode*> children = layout.nodeChildren();
     EXPECT_EQ(children.size(), 0u);
 
     FormFactorFullSphere ff(5.);
 
     layout.addParticle(Particle(HomogeneousMaterial(), ff));
     layout.setInterference(Interference1DLattice(1.0, 2.0));
-    children = layout.getChildren();
+    children = layout.nodeChildren();
     EXPECT_EQ(children.size(), 2u);
 }
diff --git a/Tests/Unit/Param/INodeTest.cpp b/Tests/Unit/Param/INodeTest.cpp
index 617e113ddb0..bbfdd599919 100644
--- a/Tests/Unit/Param/INodeTest.cpp
+++ b/Tests/Unit/Param/INodeTest.cpp
@@ -29,7 +29,7 @@ public:
 
         void appendChild(INode* node) { m_nodes.push_back(node); }
 
-        std::vector<const INode*> getChildren() const override
+        std::vector<const INode*> nodeChildren() const override
         {
             return {m_nodes.begin(), m_nodes.end()};
         }
@@ -45,7 +45,7 @@ public:
 TEST_F(INodeTest, initialState)
 {
     INodeTest::TestClass node;
-    EXPECT_EQ(node.getChildren().size(), 0u);
+    EXPECT_EQ(node.nodeChildren().size(), 0u);
 }
 
 TEST_F(INodeTest, appendChild)
@@ -58,7 +58,7 @@ TEST_F(INodeTest, appendChild)
     node.appendChild(child0);
 
     // accessing vector of children
-    auto children = node.getChildren();
+    auto children = node.nodeChildren();
     EXPECT_EQ(children.size(), 1u);
     EXPECT_TRUE(std::find(children.begin(), children.end(), child0) != children.end());
 }
diff --git a/Tests/Unit/Sample/MultiLayerTest.cpp b/Tests/Unit/Sample/MultiLayerTest.cpp
index 0ef4a1e4d4c..df3fed782a6 100644
--- a/Tests/Unit/Sample/MultiLayerTest.cpp
+++ b/Tests/Unit/Sample/MultiLayerTest.cpp
@@ -212,7 +212,7 @@ TEST_F(MultiLayerTest, MultiLayerCompositeTest)
     std::vector<const LayerInterface*> interface_buffer;
     int counter(0);
 
-    std::vector<const INode*> children = mLayer.getChildren();
+    std::vector<const INode*> children = mLayer.nodeChildren();
     for (size_t index = 0; index < children.size(); ++index) {
         const INode* sample = children[index];
         if (counter % 2 == 1) {
diff --git a/Tests/Unit/Sample/ParticleCompositionTest.cpp b/Tests/Unit/Sample/ParticleCompositionTest.cpp
index e4d3774267c..99804fff32f 100644
--- a/Tests/Unit/Sample/ParticleCompositionTest.cpp
+++ b/Tests/Unit/Sample/ParticleCompositionTest.cpp
@@ -27,7 +27,7 @@ TEST_F(ParticleCompositionTest, ParticleCompositionClone)
     composition.addParticle(particle, position);
 
     std::unique_ptr<ParticleComposition> clone(composition.clone());
-    std::vector<const INode*> children = clone->getChildren();
+    std::vector<const INode*> children = clone->nodeChildren();
     EXPECT_EQ(children.size(), 1u);
     const auto* p_particle = dynamic_cast<const IParticle*>(children[0]);
     EXPECT_EQ(p_particle->rotation(), nullptr);
diff --git a/auto/Wrap/doxygenCore.i b/auto/Wrap/doxygenCore.i
index bbd788741c3..7731fd34f76 100644
--- a/auto/Wrap/doxygenCore.i
+++ b/auto/Wrap/doxygenCore.i
@@ -969,7 +969,7 @@ Returns the results of the simulation in a format that supports unit conversion
 Initializes a progress monitor that prints to stdout. 
 ";
 
-%feature("docstring")  ISimulation::getChildren "std::vector< const INode * > ISimulation::getChildren() const override
+%feature("docstring")  ISimulation::nodeChildren "std::vector< const INode * > ISimulation::nodeChildren() const override
 ";
 
 %feature("docstring")  ISimulation::unitOfParameter "std::string ISimulation::unitOfParameter(ParameterDistribution::WhichParameter which) const
diff --git a/auto/Wrap/doxygenDevice.i b/auto/Wrap/doxygenDevice.i
index a188dc015d2..b03e1af7be1 100644
--- a/auto/Wrap/doxygenDevice.i
+++ b/auto/Wrap/doxygenDevice.i
@@ -75,7 +75,7 @@ C++ includes: Beam.h
 %feature("docstring")  Beam::clone "Beam * Beam::clone() const
 ";
 
-%feature("docstring")  Beam::getChildren "std::vector< const INode * > Beam::getChildren() const override
+%feature("docstring")  Beam::nodeChildren "std::vector< const INode * > Beam::nodeChildren() const override
 ";
 
 %feature("docstring")  Beam::intensity "double Beam::intensity() const
@@ -182,7 +182,7 @@ Convolve given intensities with the encapsulated resolution.
 %feature("docstring")  ConvolutionDetectorResolution::getResolutionFunction2D "const IResolutionFunction2D * ConvolutionDetectorResolution::getResolutionFunction2D() const
 ";
 
-%feature("docstring")  ConvolutionDetectorResolution::getChildren "std::vector< const INode * > ConvolutionDetectorResolution::getChildren() const override
+%feature("docstring")  ConvolutionDetectorResolution::nodeChildren "std::vector< const INode * > ConvolutionDetectorResolution::nodeChildren() const override
 ";
 
 
@@ -965,7 +965,7 @@ Resets region of interest making whole detector plane available for the simulati
 Returns detector masks container. 
 ";
 
-%feature("docstring")  IDetector::getChildren "std::vector< const INode * > IDetector::getChildren() const override
+%feature("docstring")  IDetector::nodeChildren "std::vector< const INode * > IDetector::nodeChildren() const override
 ";
 
 %feature("docstring")  IDetector::iterateOverRegionOfInterest "void IDetector::iterateOverRegionOfInterest(std::function< void(const_iterator)> func) const
@@ -1576,7 +1576,7 @@ init detector with beam settings
 %feature("docstring")  Instrument::polarizerPair "PolMatrices Instrument::polarizerPair() const
 ";
 
-%feature("docstring")  Instrument::getChildren "std::vector< const INode * > Instrument::getChildren() const override
+%feature("docstring")  Instrument::nodeChildren "std::vector< const INode * > Instrument::nodeChildren() const override
 ";
 
 %feature("docstring")  Instrument::createScatteringCoords "CoordSystem2D * Instrument::createScatteringCoords() const
diff --git a/auto/Wrap/doxygenParam.i b/auto/Wrap/doxygenParam.i
index cbe6eeab1d0..3a3864f193f 100644
--- a/auto/Wrap/doxygenParam.i
+++ b/auto/Wrap/doxygenParam.i
@@ -10,6 +10,8 @@ C++ includes: Distributions.h
 ";
 
 %feature("docstring")  DistributionCosine::className "std::string DistributionCosine::className() const final
+
+Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
 ";
 
 %feature("docstring")  DistributionCosine::DistributionCosine "DistributionCosine::DistributionCosine(std::vector< double > P)
@@ -62,6 +64,8 @@ C++ includes: Distributions.h
 ";
 
 %feature("docstring")  DistributionGate::className "std::string DistributionGate::className() const final
+
+Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
 ";
 
 %feature("docstring")  DistributionGate::DistributionGate "DistributionGate::DistributionGate(std::vector< double > P)
@@ -117,6 +121,8 @@ C++ includes: Distributions.h
 ";
 
 %feature("docstring")  DistributionGaussian::className "std::string DistributionGaussian::className() const final
+
+Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
 ";
 
 %feature("docstring")  DistributionGaussian::DistributionGaussian "DistributionGaussian::DistributionGaussian(std::vector< double > P)
@@ -213,6 +219,8 @@ C++ includes: Distributions.h
 ";
 
 %feature("docstring")  DistributionLogNormal::className "std::string DistributionLogNormal::className() const final
+
+Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
 ";
 
 %feature("docstring")  DistributionLogNormal::DistributionLogNormal "DistributionLogNormal::DistributionLogNormal(std::vector< double > P)
@@ -265,6 +273,8 @@ C++ includes: Distributions.h
 ";
 
 %feature("docstring")  DistributionLorentz::className "std::string DistributionLorentz::className() const final
+
+Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
 ";
 
 %feature("docstring")  DistributionLorentz::DistributionLorentz "DistributionLorentz::DistributionLorentz(std::vector< double > P)
@@ -317,6 +327,8 @@ C++ includes: Distributions.h
 ";
 
 %feature("docstring")  DistributionTrapezoid::className "std::string DistributionTrapezoid::className() const final
+
+Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
 ";
 
 %feature("docstring")  DistributionTrapezoid::DistributionTrapezoid "DistributionTrapezoid::DistributionTrapezoid(std::vector< double > P)
@@ -438,17 +450,19 @@ C++ includes: INode.h
 %feature("docstring")  INode::~INode "virtual INode::~INode()=default
 ";
 
-%feature("docstring")  INode::getChildren "std::vector< const INode * > INode::getChildren() const
+%feature("docstring")  INode::className "virtual std::string INode::className() const =0
 
-Returns a vector of children. 
+Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
 ";
 
-%feature("docstring")  INode::progeny "std::vector< const INode * > INode::progeny() const
+%feature("docstring")  INode::nodeChildren "std::vector< const INode * > INode::nodeChildren() const
 
-Returns a vector of all descendants. 
+Returns all children. 
 ";
 
-%feature("docstring")  INode::className "virtual std::string INode::className() const =0
+%feature("docstring")  INode::nodeOffspring "std::vector< const INode * > INode::nodeOffspring() const
+
+Returns all descendants. 
 ";
 
 
diff --git a/auto/Wrap/doxygenSample.i b/auto/Wrap/doxygenSample.i
index dd400997d6e..f6255eb6927 100644
--- a/auto/Wrap/doxygenSample.i
+++ b/auto/Wrap/doxygenSample.i
@@ -178,7 +178,7 @@ Returns a clone of this  ISampleNode object.
 %feature("docstring")  Crystal::rotatedLattice "Lattice3D Crystal::rotatedLattice(const IRotation *rotation=nullptr) const
 ";
 
-%feature("docstring")  Crystal::getChildren "std::vector< const INode * > Crystal::getChildren() const override
+%feature("docstring")  Crystal::nodeChildren "std::vector< const INode * > Crystal::nodeChildren() const override
 ";
 
 %feature("docstring")  Crystal::basis "const IParticle * Crystal::basis() const
@@ -2930,7 +2930,7 @@ one-dimensional decay function in reciprocal space
 %feature("docstring")  Interference1DLattice::getXi "double Interference1DLattice::getXi() const
 ";
 
-%feature("docstring")  Interference1DLattice::getChildren "std::vector< const INode * > Interference1DLattice::getChildren() const override
+%feature("docstring")  Interference1DLattice::nodeChildren "std::vector< const INode * > Interference1DLattice::nodeChildren() const override
 ";
 
 
@@ -2981,7 +2981,7 @@ two-dimensional decay function in reciprocal space
 Returns the particle density associated with this 2d lattice. 
 ";
 
-%feature("docstring")  Interference2DLattice::getChildren "std::vector< const INode * > Interference2DLattice::getChildren() const override
+%feature("docstring")  Interference2DLattice::nodeChildren "std::vector< const INode * > Interference2DLattice::nodeChildren() const override
 ";
 
 
@@ -3074,7 +3074,7 @@ integration flag
 If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value 
 ";
 
-%feature("docstring")  Interference2DParaCrystal::getChildren "std::vector< const INode * > Interference2DParaCrystal::getChildren() const override
+%feature("docstring")  Interference2DParaCrystal::nodeChildren "std::vector< const INode * > Interference2DParaCrystal::nodeChildren() const override
 ";
 
 %feature("docstring")  Interference2DParaCrystal::pdf1 "const IFTDistribution2D* Interference2DParaCrystal::pdf1() const
@@ -3158,7 +3158,7 @@ Evaluates the interference function for a given wavevector transfer.
 %feature("docstring")  Interference2DSuperLattice::lattice "const Lattice2D & Interference2DSuperLattice::lattice() const
 ";
 
-%feature("docstring")  Interference2DSuperLattice::getChildren "std::vector< const INode * > Interference2DSuperLattice::getChildren() const override
+%feature("docstring")  Interference2DSuperLattice::nodeChildren "std::vector< const INode * > Interference2DSuperLattice::nodeChildren() const override
 ";
 
 
@@ -3195,7 +3195,7 @@ Returns a clone of this  ISampleNode object.
 Indicates if this interference function can be used with a multilayer (DWBA mode) 
 ";
 
-%feature("docstring")  Interference3DLattice::getChildren "std::vector< const INode * > Interference3DLattice::getChildren() const override
+%feature("docstring")  Interference3DLattice::nodeChildren "std::vector< const INode * > Interference3DLattice::nodeChildren() const override
 ";
 
 
@@ -3255,7 +3255,7 @@ Returns a clone of this  ISampleNode object.
 Returns the particle density associated with this 2d lattice. 
 ";
 
-%feature("docstring")  InterferenceFinite2DLattice::getChildren "std::vector< const INode * > InterferenceFinite2DLattice::getChildren() const override
+%feature("docstring")  InterferenceFinite2DLattice::nodeChildren "std::vector< const INode * > InterferenceFinite2DLattice::nodeChildren() const override
 ";
 
 
@@ -3298,7 +3298,7 @@ Returns a clone of this  ISampleNode object.
 Indicates if this interference function can be used with a multilayer (DWBA mode) 
 ";
 
-%feature("docstring")  InterferenceFinite3DLattice::getChildren "std::vector< const INode * > InterferenceFinite3DLattice::getChildren() const override
+%feature("docstring")  InterferenceFinite3DLattice::nodeChildren "std::vector< const INode * > InterferenceFinite3DLattice::nodeChildren() const override
 ";
 
 
@@ -3430,7 +3430,7 @@ probability distribution (Fourier transform of probability density)
 %feature("docstring")  InterferenceRadialParaCrystal::dampingLength "double InterferenceRadialParaCrystal::dampingLength() const
 ";
 
-%feature("docstring")  InterferenceRadialParaCrystal::getChildren "std::vector< const INode * > InterferenceRadialParaCrystal::getChildren() const override
+%feature("docstring")  InterferenceRadialParaCrystal::nodeChildren "std::vector< const INode * > InterferenceRadialParaCrystal::nodeChildren() const override
 ";
 
 %feature("docstring")  InterferenceRadialParaCrystal::randomSample "double InterferenceRadialParaCrystal::randomSample() const
@@ -3559,7 +3559,7 @@ Sets transformation.
 Rotates the particle. 
 ";
 
-%feature("docstring")  IParticle::getChildren "std::vector< const INode * > IParticle::getChildren() const override
+%feature("docstring")  IParticle::nodeChildren "std::vector< const INode * > IParticle::nodeChildren() const override
 ";
 
 %feature("docstring")  IParticle::decompose "SafePointerVector< IParticle > IParticle::decompose() const
@@ -4013,7 +4013,7 @@ Returns nullptr, unless overwritten to return a specific material.
 %feature("docstring")  Layer::layouts "std::vector< const ParticleLayout * > Layer::layouts() const
 ";
 
-%feature("docstring")  Layer::getChildren "std::vector< const INode * > Layer::getChildren() const override
+%feature("docstring")  Layer::nodeChildren "std::vector< const INode * > Layer::nodeChildren() const override
 ";
 
 %feature("docstring")  Layer::setNumberOfSlices "void Layer::setNumberOfSlices(unsigned int n_slices)
@@ -4058,7 +4058,7 @@ Returns roughness of the interface.
 %feature("docstring")  LayerInterface::bottomLayer "const Layer * LayerInterface::bottomLayer() const
 ";
 
-%feature("docstring")  LayerInterface::getChildren "std::vector< const INode * > LayerInterface::getChildren() const override
+%feature("docstring")  LayerInterface::nodeChildren "std::vector< const INode * > LayerInterface::nodeChildren() const override
 ";
 
 
@@ -4391,7 +4391,7 @@ Returns a clone of this  ISampleNode object.
 Creates a sliced form factor for this particle. 
 ";
 
-%feature("docstring")  MesoCrystal::getChildren "std::vector< const INode * > MesoCrystal::getChildren() const override
+%feature("docstring")  MesoCrystal::nodeChildren "std::vector< const INode * > MesoCrystal::nodeChildren() const override
 ";
 
 %feature("docstring")  MesoCrystal::outerShape "const IFormFactor* MesoCrystal::outerShape() const
@@ -4540,7 +4540,7 @@ Returns cross correlation length of roughnesses between interfaces.
 Returns the external field applied to the multilayer (units: A/m) 
 ";
 
-%feature("docstring")  MultiLayer::getChildren "std::vector< const INode * > MultiLayer::getChildren() const override
+%feature("docstring")  MultiLayer::nodeChildren "std::vector< const INode * > MultiLayer::nodeChildren() const override
 ";
 
 %feature("docstring")  MultiLayer::setSampleName "void MultiLayer::setSampleName(const std::string &name)
@@ -4594,7 +4594,7 @@ Creates a sliced form factor for this particle.
 Returns nullptr, unless overwritten to return a specific material. 
 ";
 
-%feature("docstring")  Particle::getChildren "std::vector< const INode * > Particle::getChildren() const override
+%feature("docstring")  Particle::nodeChildren "std::vector< const INode * > Particle::nodeChildren() const override
 ";
 
 %feature("docstring")  Particle::formFactor "const IFormFactor* Particle::formFactor() const
@@ -4648,7 +4648,7 @@ Returns number of different particles.
 %feature("docstring")  ParticleComposition::particles "std::vector< const IParticle * > ParticleComposition::particles() const
 ";
 
-%feature("docstring")  ParticleComposition::getChildren "std::vector< const INode * > ParticleComposition::getChildren() const override
+%feature("docstring")  ParticleComposition::nodeChildren "std::vector< const INode * > ParticleComposition::nodeChildren() const override
 ";
 
 %feature("docstring")  ParticleComposition::decompose "SafePointerVector< IParticle > ParticleComposition::decompose() const override
@@ -4695,7 +4695,7 @@ Creates a sliced form factor for this particle.
 %feature("docstring")  ParticleCoreShell::shellParticle "const Particle * ParticleCoreShell::shellParticle() const
 ";
 
-%feature("docstring")  ParticleCoreShell::getChildren "std::vector< const INode * > ParticleCoreShell::getChildren() const override
+%feature("docstring")  ParticleCoreShell::nodeChildren "std::vector< const INode * > ParticleCoreShell::nodeChildren() const override
 ";
 
 
@@ -4774,7 +4774,7 @@ particle_density:
 number of particles per square nanometer 
 ";
 
-%feature("docstring")  ParticleLayout::getChildren "std::vector< const INode * > ParticleLayout::getChildren() const override
+%feature("docstring")  ParticleLayout::nodeChildren "std::vector< const INode * > ParticleLayout::nodeChildren() const override
 ";
 
 %feature("docstring")  ParticleLayout::weight "double ParticleLayout::weight() const
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index fd2805f1a04..38e31107a1c 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -3888,13 +3888,13 @@ class ISimulation(libBornAgainParam.INode):
         """
         return _libBornAgainCore.ISimulation_setTerminalProgressMonitor(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(ISimulation self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > ISimulation::getChildren() const override
+        nodeChildren(ISimulation self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > ISimulation::nodeChildren() const override
 
         """
-        return _libBornAgainCore.ISimulation_getChildren(self)
+        return _libBornAgainCore.ISimulation_nodeChildren(self)
 
     def unitOfParameter(self, which):
         r"""
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 25b64f2b643..d739f0e2c6e 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -42537,7 +42537,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ISimulation_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_ISimulation_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ISimulation *arg1 = (ISimulation *) 0 ;
   void *argp1 = 0 ;
@@ -42549,10 +42549,10 @@ SWIGINTERN PyObject *_wrap_ISimulation_getChildren(PyObject *SWIGUNUSEDPARM(self
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ISimulation, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ISimulation_getChildren" "', argument " "1"" of type '" "ISimulation const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ISimulation_nodeChildren" "', argument " "1"" of type '" "ISimulation const *""'"); 
   }
   arg1 = reinterpret_cast< ISimulation * >(argp1);
-  result = ((ISimulation const *)arg1)->getChildren();
+  result = ((ISimulation const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -47221,9 +47221,9 @@ static PyMethodDef SwigMethods[] = {
 		"Initializes a progress monitor that prints to stdout. \n"
 		"\n"
 		""},
-	 { "ISimulation_getChildren", _wrap_ISimulation_getChildren, METH_O, "\n"
-		"ISimulation_getChildren(ISimulation self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > ISimulation::getChildren() const override\n"
+	 { "ISimulation_nodeChildren", _wrap_ISimulation_nodeChildren, METH_O, "\n"
+		"ISimulation_nodeChildren(ISimulation self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > ISimulation::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "ISimulation_unitOfParameter", _wrap_ISimulation_unitOfParameter, METH_VARARGS, "\n"
diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py
index d51efb5b8d7..df26c496110 100644
--- a/auto/Wrap/libBornAgainDevice.py
+++ b/auto/Wrap/libBornAgainDevice.py
@@ -2963,13 +2963,13 @@ class Beam(libBornAgainParam.INode):
         r"""horizontalBeam() -> Beam"""
         return _libBornAgainDevice.Beam_horizontalBeam()
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(Beam self) -> std::vector< INode const *,std::allocator< INode const * > >
-        std::vector< const INode * > Beam::getChildren() const override
+        nodeChildren(Beam self) -> std::vector< INode const *,std::allocator< INode const * > >
+        std::vector< const INode * > Beam::nodeChildren() const override
 
         """
-        return _libBornAgainDevice.Beam_getChildren(self)
+        return _libBornAgainDevice.Beam_nodeChildren(self)
 
     def intensity(self):
         r"""
@@ -4162,13 +4162,13 @@ class IDetector(libBornAgainBase.ICloneable, libBornAgainParam.INode):
         """
         return _libBornAgainDevice.IDetector_detectorMask(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(IDetector self) -> std::vector< INode const *,std::allocator< INode const * > >
-        std::vector< const INode * > IDetector::getChildren() const override
+        nodeChildren(IDetector self) -> std::vector< INode const *,std::allocator< INode const * > >
+        std::vector< const INode * > IDetector::nodeChildren() const override
 
         """
-        return _libBornAgainDevice.IDetector_getChildren(self)
+        return _libBornAgainDevice.IDetector_nodeChildren(self)
 
     def iterateOverRegionOfInterest(self, func):
         r"""
@@ -4883,13 +4883,13 @@ class Instrument(libBornAgainParam.INode):
         """
         return _libBornAgainDevice.Instrument_polarizerPair(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(Instrument self) -> std::vector< INode const *,std::allocator< INode const * > >
-        std::vector< const INode * > Instrument::getChildren() const override
+        nodeChildren(Instrument self) -> std::vector< INode const *,std::allocator< INode const * > >
+        std::vector< const INode * > Instrument::nodeChildren() const override
 
         """
-        return _libBornAgainDevice.Instrument_getChildren(self)
+        return _libBornAgainDevice.Instrument_nodeChildren(self)
 
     def createScatteringCoords(self):
         r"""
diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp
index eb783b99fa6..5bf0e2bdc53 100644
--- a/auto/Wrap/libBornAgainDevice_wrap.cpp
+++ b/auto/Wrap/libBornAgainDevice_wrap.cpp
@@ -33781,7 +33781,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Beam_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Beam_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Beam *arg1 = (Beam *) 0 ;
   void *argp1 = 0 ;
@@ -33793,10 +33793,10 @@ SWIGINTERN PyObject *_wrap_Beam_getChildren(PyObject *SWIGUNUSEDPARM(self), PyOb
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Beam, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Beam_getChildren" "', argument " "1"" of type '" "Beam const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Beam_nodeChildren" "', argument " "1"" of type '" "Beam const *""'"); 
   }
   arg1 = reinterpret_cast< Beam * >(argp1);
-  result = ((Beam const *)arg1)->getChildren();
+  result = ((Beam const *)arg1)->nodeChildren();
   resultobj = SWIG_NewPointerObj((new std::vector< INode const *,std::allocator< INode const * > >(static_cast< const std::vector< INode const *,std::allocator< INode const * > >& >(result))), SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t, SWIG_POINTER_OWN |  0 );
   return resultobj;
 fail:
@@ -38172,7 +38172,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IDetector_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_IDetector_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   IDetector *arg1 = (IDetector *) 0 ;
   void *argp1 = 0 ;
@@ -38184,10 +38184,10 @@ SWIGINTERN PyObject *_wrap_IDetector_getChildren(PyObject *SWIGUNUSEDPARM(self),
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_IDetector, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IDetector_getChildren" "', argument " "1"" of type '" "IDetector const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IDetector_nodeChildren" "', argument " "1"" of type '" "IDetector const *""'"); 
   }
   arg1 = reinterpret_cast< IDetector * >(argp1);
-  result = ((IDetector const *)arg1)->getChildren();
+  result = ((IDetector const *)arg1)->nodeChildren();
   resultobj = SWIG_NewPointerObj((new std::vector< INode const *,std::allocator< INode const * > >(static_cast< const std::vector< INode const *,std::allocator< INode const * > >& >(result))), SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t, SWIG_POINTER_OWN |  0 );
   return resultobj;
 fail:
@@ -41226,7 +41226,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Instrument_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Instrument_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Instrument *arg1 = (Instrument *) 0 ;
   void *argp1 = 0 ;
@@ -41238,10 +41238,10 @@ SWIGINTERN PyObject *_wrap_Instrument_getChildren(PyObject *SWIGUNUSEDPARM(self)
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Instrument, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Instrument_getChildren" "', argument " "1"" of type '" "Instrument const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Instrument_nodeChildren" "', argument " "1"" of type '" "Instrument const *""'"); 
   }
   arg1 = reinterpret_cast< Instrument * >(argp1);
-  result = ((Instrument const *)arg1)->getChildren();
+  result = ((Instrument const *)arg1)->nodeChildren();
   resultobj = SWIG_NewPointerObj((new std::vector< INode const *,std::allocator< INode const * > >(static_cast< const std::vector< INode const *,std::allocator< INode const * > >& >(result))), SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t, SWIG_POINTER_OWN |  0 );
   return resultobj;
 fail:
@@ -47730,9 +47730,9 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { "Beam_horizontalBeam", _wrap_Beam_horizontalBeam, METH_NOARGS, "Beam_horizontalBeam() -> Beam"},
-	 { "Beam_getChildren", _wrap_Beam_getChildren, METH_O, "\n"
-		"Beam_getChildren(Beam self) -> std::vector< INode const *,std::allocator< INode const * > >\n"
-		"std::vector< const INode * > Beam::getChildren() const override\n"
+	 { "Beam_nodeChildren", _wrap_Beam_nodeChildren, METH_O, "\n"
+		"Beam_nodeChildren(Beam self) -> std::vector< INode const *,std::allocator< INode const * > >\n"
+		"std::vector< const INode * > Beam::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "Beam_intensity", _wrap_Beam_intensity, METH_O, "\n"
@@ -48391,9 +48391,9 @@ static PyMethodDef SwigMethods[] = {
 		"Returns detector masks container. \n"
 		"\n"
 		""},
-	 { "IDetector_getChildren", _wrap_IDetector_getChildren, METH_O, "\n"
-		"IDetector_getChildren(IDetector self) -> std::vector< INode const *,std::allocator< INode const * > >\n"
-		"std::vector< const INode * > IDetector::getChildren() const override\n"
+	 { "IDetector_nodeChildren", _wrap_IDetector_nodeChildren, METH_O, "\n"
+		"IDetector_nodeChildren(IDetector self) -> std::vector< INode const *,std::allocator< INode const * > >\n"
+		"std::vector< const INode * > IDetector::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "IDetector_iterateOverRegionOfInterest", _wrap_IDetector_iterateOverRegionOfInterest, METH_VARARGS, "\n"
@@ -48846,9 +48846,9 @@ static PyMethodDef SwigMethods[] = {
 		"PolMatrices Instrument::polarizerPair() const\n"
 		"\n"
 		""},
-	 { "Instrument_getChildren", _wrap_Instrument_getChildren, METH_O, "\n"
-		"Instrument_getChildren(Instrument self) -> std::vector< INode const *,std::allocator< INode const * > >\n"
-		"std::vector< const INode * > Instrument::getChildren() const override\n"
+	 { "Instrument_nodeChildren", _wrap_Instrument_nodeChildren, METH_O, "\n"
+		"Instrument_nodeChildren(Instrument self) -> std::vector< INode const *,std::allocator< INode const * > >\n"
+		"std::vector< const INode * > Instrument::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "Instrument_createScatteringCoords", _wrap_Instrument_createScatteringCoords, METH_O, "\n"
diff --git a/auto/Wrap/libBornAgainParam.py b/auto/Wrap/libBornAgainParam.py
index 10486888ad7..5b7e863736f 100644
--- a/auto/Wrap/libBornAgainParam.py
+++ b/auto/Wrap/libBornAgainParam.py
@@ -2336,33 +2336,35 @@ class INode(object):
         _libBornAgainParam.INode_swiginit(self, _libBornAgainParam.new_INode(_self, *args))
     __swig_destroy__ = _libBornAgainParam.delete_INode
 
-    def getChildren(self):
+    def className(self):
         r"""
-        getChildren(INode self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > INode::getChildren() const
+        className(INode self) -> std::string
+        virtual std::string INode::className() const =0
 
-        Returns a vector of children. 
+        Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
 
         """
-        return _libBornAgainParam.INode_getChildren(self)
+        return _libBornAgainParam.INode_className(self)
 
-    def progeny(self):
+    def nodeChildren(self):
         r"""
-        progeny(INode self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > INode::progeny() const
+        nodeChildren(INode self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > INode::nodeChildren() const
 
-        Returns a vector of all descendants. 
+        Returns all children. 
 
         """
-        return _libBornAgainParam.INode_progeny(self)
+        return _libBornAgainParam.INode_nodeChildren(self)
 
-    def className(self):
+    def nodeOffspring(self):
         r"""
-        className(INode self) -> std::string
-        virtual std::string INode::className() const =0
+        nodeOffspring(INode self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > INode::nodeOffspring() const
+
+        Returns all descendants. 
 
         """
-        return _libBornAgainParam.INode_className(self)
+        return _libBornAgainParam.INode_nodeOffspring(self)
     def __disown__(self):
         self.this.disown()
         _libBornAgainParam.disown_INode(self)
@@ -2489,6 +2491,8 @@ class DistributionGate(IDistribution1D):
         className(DistributionGate self) -> std::string
         std::string DistributionGate::className() const final
 
+        Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
+
         """
         return _libBornAgainParam.DistributionGate_className(self)
 
@@ -2590,6 +2594,8 @@ class DistributionLorentz(IDistribution1D):
         className(DistributionLorentz self) -> std::string
         std::string DistributionLorentz::className() const final
 
+        Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
+
         """
         return _libBornAgainParam.DistributionLorentz_className(self)
 
@@ -2683,6 +2689,8 @@ class DistributionGaussian(IDistribution1D):
         className(DistributionGaussian self) -> std::string
         std::string DistributionGaussian::className() const final
 
+        Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
+
         """
         return _libBornAgainParam.DistributionGaussian_className(self)
 
@@ -2776,6 +2784,8 @@ class DistributionLogNormal(IDistribution1D):
         className(DistributionLogNormal self) -> std::string
         std::string DistributionLogNormal::className() const final
 
+        Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
+
         """
         return _libBornAgainParam.DistributionLogNormal_className(self)
 
@@ -2886,6 +2896,8 @@ class DistributionCosine(IDistribution1D):
         className(DistributionCosine self) -> std::string
         std::string DistributionCosine::className() const final
 
+        Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
+
         """
         return _libBornAgainParam.DistributionCosine_className(self)
 
@@ -2979,6 +2991,8 @@ class DistributionTrapezoid(IDistribution1D):
         className(DistributionTrapezoid self) -> std::string
         std::string DistributionTrapezoid::className() const final
 
+        Returns the class name, to be hard-coded in each leaf class that inherits from  INode. 
+
         """
         return _libBornAgainParam.DistributionTrapezoid_className(self)
 
diff --git a/auto/Wrap/libBornAgainParam_wrap.cpp b/auto/Wrap/libBornAgainParam_wrap.cpp
index 39211eeaaa3..d0557962031 100644
--- a/auto/Wrap/libBornAgainParam_wrap.cpp
+++ b/auto/Wrap/libBornAgainParam_wrap.cpp
@@ -7266,67 +7266,67 @@ SwigDirector_INode::SwigDirector_INode(PyObject *self, NodeMeta const &meta, std
 SwigDirector_INode::~SwigDirector_INode() {
 }
 
-std::vector< INode const *, std::allocator< INode const * > > SwigDirector_INode::getChildren() const {
-  std::vector< INode const *,std::allocator< INode const * > > c_result;
+std::string SwigDirector_INode::className() const {
+  std::string c_result;
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call INode.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char *const swig_method_name = "getChildren";
+  const char *const swig_method_name = "className";
   PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject args = PyTuple_New(0);
   swig::SwigVar_PyObject result = PyObject_Call(method, (PyObject *) args, NULL);
 #else
-  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("getChildren");
+  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("className");
   swig::SwigVar_PyObject result = PyObject_CallMethodObjArgs(swig_get_self(), (PyObject *) swig_method_name, NULL);
 #endif
   if (!result) {
     PyObject *error = PyErr_Occurred();
     if (error) {
-      Swig::DirectorMethodException::raise("Error detected when calling 'INode.getChildren'");
+      Swig::DirectorMethodException::raise("Error detected when calling 'INode.className'");
     }
   }
-  std::vector< INode const*,std::allocator< INode const * > > *swig_optr = 0;
-  int swig_ores = swig::asptr(result, &swig_optr);
+  std::string *swig_optr = 0;
+  int swig_ores = SWIG_AsPtr_std_string(result, &swig_optr);
   if (!SWIG_IsOK(swig_ores) || !swig_optr) {
-    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::vector< INode const *,std::allocator< INode const * > >""'");
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::string""'");
   }
   c_result = *swig_optr;
   if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
-  return (std::vector< INode const *,std::allocator< INode const * > >) c_result;
+  return (std::string) c_result;
 }
 
 
-std::string SwigDirector_INode::className() const {
-  std::string c_result;
+std::vector< INode const *, std::allocator< INode const * > > SwigDirector_INode::nodeChildren() const {
+  std::vector< INode const *,std::allocator< INode const * > > c_result;
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call INode.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char *const swig_method_name = "className";
+  const char *const swig_method_name = "nodeChildren";
   PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject args = PyTuple_New(0);
   swig::SwigVar_PyObject result = PyObject_Call(method, (PyObject *) args, NULL);
 #else
-  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("className");
+  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("nodeChildren");
   swig::SwigVar_PyObject result = PyObject_CallMethodObjArgs(swig_get_self(), (PyObject *) swig_method_name, NULL);
 #endif
   if (!result) {
     PyObject *error = PyErr_Occurred();
     if (error) {
-      Swig::DirectorMethodException::raise("Error detected when calling 'INode.className'");
+      Swig::DirectorMethodException::raise("Error detected when calling 'INode.nodeChildren'");
     }
   }
-  std::string *swig_optr = 0;
-  int swig_ores = SWIG_AsPtr_std_string(result, &swig_optr);
+  std::vector< INode const*,std::allocator< INode const * > > *swig_optr = 0;
+  int swig_ores = swig::asptr(result, &swig_optr);
   if (!SWIG_IsOK(swig_ores) || !swig_optr) {
-    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::string""'");
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::vector< INode const *,std::allocator< INode const * > >""'");
   }
   c_result = *swig_optr;
   if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
-  return (std::string) c_result;
+  return (std::vector< INode const *,std::allocator< INode const * > >) c_result;
 }
 
 
@@ -30893,7 +30893,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INode_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_INode_className(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   INode *arg1 = (INode *) 0 ;
   void *argp1 = 0 ;
@@ -30901,49 +30901,61 @@ SWIGINTERN PyObject *_wrap_INode_getChildren(PyObject *SWIGUNUSEDPARM(self), PyO
   PyObject *swig_obj[1] ;
   Swig::Director *director = 0;
   bool upcall = false;
-  std::vector< INode const *,std::allocator< INode const * > > result;
+  std::string result;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_INode, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INode_getChildren" "', argument " "1"" of type '" "INode const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INode_className" "', argument " "1"" of type '" "INode const *""'"); 
   }
   arg1 = reinterpret_cast< INode * >(argp1);
   director = SWIG_DIRECTOR_CAST(arg1);
   upcall = (director && (director->swig_get_self()==swig_obj[0]));
   try {
     if (upcall) {
-      result = ((INode const *)arg1)->INode::getChildren();
+      Swig::DirectorPureVirtualException::raise("INode::className");
     } else {
-      result = ((INode const *)arg1)->getChildren();
+      result = ((INode const *)arg1)->className();
     }
   } catch (Swig::DirectorException&) {
     SWIG_fail;
   }
-  resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
+  resultobj = SWIG_From_std_string(static_cast< std::string >(result));
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_INode_progeny(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_INode_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   INode *arg1 = (INode *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
+  Swig::Director *director = 0;
+  bool upcall = false;
   std::vector< INode const *,std::allocator< INode const * > > result;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_INode, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INode_progeny" "', argument " "1"" of type '" "INode const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INode_nodeChildren" "', argument " "1"" of type '" "INode const *""'"); 
   }
   arg1 = reinterpret_cast< INode * >(argp1);
-  result = ((INode const *)arg1)->progeny();
+  director = SWIG_DIRECTOR_CAST(arg1);
+  upcall = (director && (director->swig_get_self()==swig_obj[0]));
+  try {
+    if (upcall) {
+      result = ((INode const *)arg1)->INode::nodeChildren();
+    } else {
+      result = ((INode const *)arg1)->nodeChildren();
+    }
+  } catch (Swig::DirectorException&) {
+    SWIG_fail;
+  }
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -30951,35 +30963,23 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_INode_className(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_INode_nodeOffspring(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   INode *arg1 = (INode *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  Swig::Director *director = 0;
-  bool upcall = false;
-  std::string result;
+  std::vector< INode const *,std::allocator< INode const * > > result;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_INode, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INode_className" "', argument " "1"" of type '" "INode const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "INode_nodeOffspring" "', argument " "1"" of type '" "INode const *""'"); 
   }
   arg1 = reinterpret_cast< INode * >(argp1);
-  director = SWIG_DIRECTOR_CAST(arg1);
-  upcall = (director && (director->swig_get_self()==swig_obj[0]));
-  try {
-    if (upcall) {
-      Swig::DirectorPureVirtualException::raise("INode::className");
-    } else {
-      result = ((INode const *)arg1)->className();
-    }
-  } catch (Swig::DirectorException&) {
-    SWIG_fail;
-  }
-  resultobj = SWIG_From_std_string(static_cast< std::string >(result));
+  result = ((INode const *)arg1)->nodeOffspring();
+  resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
   return NULL;
@@ -39378,23 +39378,25 @@ static PyMethodDef SwigMethods[] = {
 		"virtual INode::~INode()=default\n"
 		"\n"
 		""},
-	 { "INode_getChildren", _wrap_INode_getChildren, METH_O, "\n"
-		"INode_getChildren(INode self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > INode::getChildren() const\n"
+	 { "INode_className", _wrap_INode_className, METH_O, "\n"
+		"INode_className(INode self) -> std::string\n"
+		"virtual std::string INode::className() const =0\n"
 		"\n"
-		"Returns a vector of children. \n"
+		"Returns the class name, to be hard-coded in each leaf class that inherits from  INode. \n"
 		"\n"
 		""},
-	 { "INode_progeny", _wrap_INode_progeny, METH_O, "\n"
-		"INode_progeny(INode self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > INode::progeny() const\n"
+	 { "INode_nodeChildren", _wrap_INode_nodeChildren, METH_O, "\n"
+		"INode_nodeChildren(INode self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > INode::nodeChildren() const\n"
 		"\n"
-		"Returns a vector of all descendants. \n"
+		"Returns all children. \n"
 		"\n"
 		""},
-	 { "INode_className", _wrap_INode_className, METH_O, "\n"
-		"INode_className(INode self) -> std::string\n"
-		"virtual std::string INode::className() const =0\n"
+	 { "INode_nodeOffspring", _wrap_INode_nodeOffspring, METH_O, "\n"
+		"INode_nodeOffspring(INode self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > INode::nodeOffspring() const\n"
+		"\n"
+		"Returns all descendants. \n"
 		"\n"
 		""},
 	 { "disown_INode", _wrap_disown_INode, METH_O, NULL},
@@ -39460,6 +39462,8 @@ static PyMethodDef SwigMethods[] = {
 		"DistributionGate_className(DistributionGate self) -> std::string\n"
 		"std::string DistributionGate::className() const final\n"
 		"\n"
+		"Returns the class name, to be hard-coded in each leaf class that inherits from  INode. \n"
+		"\n"
 		""},
 	 { "new_DistributionGate", _wrap_new_DistributionGate, METH_VARARGS, "\n"
 		"DistributionGate(vdouble1d_t P)\n"
@@ -39518,6 +39522,8 @@ static PyMethodDef SwigMethods[] = {
 		"DistributionLorentz_className(DistributionLorentz self) -> std::string\n"
 		"std::string DistributionLorentz::className() const final\n"
 		"\n"
+		"Returns the class name, to be hard-coded in each leaf class that inherits from  INode. \n"
+		"\n"
 		""},
 	 { "new_DistributionLorentz", _wrap_new_DistributionLorentz, METH_VARARGS, "\n"
 		"DistributionLorentz(vdouble1d_t P)\n"
@@ -39571,6 +39577,8 @@ static PyMethodDef SwigMethods[] = {
 		"DistributionGaussian_className(DistributionGaussian self) -> std::string\n"
 		"std::string DistributionGaussian::className() const final\n"
 		"\n"
+		"Returns the class name, to be hard-coded in each leaf class that inherits from  INode. \n"
+		"\n"
 		""},
 	 { "new_DistributionGaussian", _wrap_new_DistributionGaussian, METH_VARARGS, "\n"
 		"DistributionGaussian(vdouble1d_t P)\n"
@@ -39624,6 +39632,8 @@ static PyMethodDef SwigMethods[] = {
 		"DistributionLogNormal_className(DistributionLogNormal self) -> std::string\n"
 		"std::string DistributionLogNormal::className() const final\n"
 		"\n"
+		"Returns the class name, to be hard-coded in each leaf class that inherits from  INode. \n"
+		"\n"
 		""},
 	 { "new_DistributionLogNormal", _wrap_new_DistributionLogNormal, METH_VARARGS, "\n"
 		"DistributionLogNormal(vdouble1d_t P)\n"
@@ -39688,6 +39698,8 @@ static PyMethodDef SwigMethods[] = {
 		"DistributionCosine_className(DistributionCosine self) -> std::string\n"
 		"std::string DistributionCosine::className() const final\n"
 		"\n"
+		"Returns the class name, to be hard-coded in each leaf class that inherits from  INode. \n"
+		"\n"
 		""},
 	 { "new_DistributionCosine", _wrap_new_DistributionCosine, METH_VARARGS, "\n"
 		"DistributionCosine(vdouble1d_t P)\n"
@@ -39741,6 +39753,8 @@ static PyMethodDef SwigMethods[] = {
 		"DistributionTrapezoid_className(DistributionTrapezoid self) -> std::string\n"
 		"std::string DistributionTrapezoid::className() const final\n"
 		"\n"
+		"Returns the class name, to be hard-coded in each leaf class that inherits from  INode. \n"
+		"\n"
 		""},
 	 { "new_DistributionTrapezoid", _wrap_new_DistributionTrapezoid, METH_VARARGS, "\n"
 		"DistributionTrapezoid(vdouble1d_t P)\n"
diff --git a/auto/Wrap/libBornAgainParam_wrap.h b/auto/Wrap/libBornAgainParam_wrap.h
index 6cde1c3cea8..5fb8f59c07f 100644
--- a/auto/Wrap/libBornAgainParam_wrap.h
+++ b/auto/Wrap/libBornAgainParam_wrap.h
@@ -21,8 +21,8 @@ public:
     SwigDirector_INode(PyObject *self);
     SwigDirector_INode(PyObject *self, NodeMeta const &meta, std::vector< double, std::allocator< double > > PValues);
     virtual ~SwigDirector_INode();
-    virtual std::vector< INode const *, std::allocator< INode const * > > getChildren() const;
     virtual std::string className() const;
+    virtual std::vector< INode const *, std::allocator< INode const * > > nodeChildren() const;
 
 /* Internal director utilities */
 public:
diff --git a/auto/Wrap/libBornAgainSample.py b/auto/Wrap/libBornAgainSample.py
index 51c04b8353f..94d5c50f9cf 100644
--- a/auto/Wrap/libBornAgainSample.py
+++ b/auto/Wrap/libBornAgainSample.py
@@ -4290,13 +4290,13 @@ class Crystal(ISampleNode):
         """
         return _libBornAgainSample.Crystal_rotatedLattice(self, rotation)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(Crystal self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > Crystal::getChildren() const override
+        nodeChildren(Crystal self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > Crystal::nodeChildren() const override
 
         """
-        return _libBornAgainSample.Crystal_getChildren(self)
+        return _libBornAgainSample.Crystal_nodeChildren(self)
 
     def basis(self):
         r"""
@@ -4453,13 +4453,13 @@ class IParticle(ISampleNode):
         """
         return _libBornAgainSample.IParticle_rotate(self, rotation)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(IParticle self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > IParticle::getChildren() const override
+        nodeChildren(IParticle self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > IParticle::nodeChildren() const override
 
         """
-        return _libBornAgainSample.IParticle_getChildren(self)
+        return _libBornAgainSample.IParticle_nodeChildren(self)
 
     def decompose(self):
         r"""
@@ -4536,13 +4536,13 @@ class MesoCrystal(IParticle):
         """
         return _libBornAgainSample.MesoCrystal_createSlicedParticle(self, limits)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(MesoCrystal self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > MesoCrystal::getChildren() const override
+        nodeChildren(MesoCrystal self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > MesoCrystal::nodeChildren() const override
 
         """
-        return _libBornAgainSample.MesoCrystal_getChildren(self)
+        return _libBornAgainSample.MesoCrystal_nodeChildren(self)
 
     def outerShape(self):
         r"""
@@ -4624,13 +4624,13 @@ class Particle(IParticle):
         """
         return _libBornAgainSample.Particle_material(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(Particle self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > Particle::getChildren() const override
+        nodeChildren(Particle self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > Particle::nodeChildren() const override
 
         """
-        return _libBornAgainSample.Particle_getChildren(self)
+        return _libBornAgainSample.Particle_nodeChildren(self)
 
     def formFactor(self):
         r"""
@@ -4731,13 +4731,13 @@ class ParticleComposition(IParticle):
         """
         return _libBornAgainSample.ParticleComposition_particles(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(ParticleComposition self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > ParticleComposition::getChildren() const override
+        nodeChildren(ParticleComposition self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > ParticleComposition::nodeChildren() const override
 
         """
-        return _libBornAgainSample.ParticleComposition_getChildren(self)
+        return _libBornAgainSample.ParticleComposition_nodeChildren(self)
 
     def decompose(self):
         r"""
@@ -4830,13 +4830,13 @@ class ParticleCoreShell(IParticle):
         """
         return _libBornAgainSample.ParticleCoreShell_shellParticle(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(ParticleCoreShell self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > ParticleCoreShell::getChildren() const override
+        nodeChildren(ParticleCoreShell self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > ParticleCoreShell::nodeChildren() const override
 
         """
-        return _libBornAgainSample.ParticleCoreShell_getChildren(self)
+        return _libBornAgainSample.ParticleCoreShell_nodeChildren(self)
 
 # Register ParticleCoreShell in _libBornAgainSample:
 _libBornAgainSample.ParticleCoreShell_swigregister(ParticleCoreShell)
@@ -6744,13 +6744,13 @@ class Interference1DLattice(IInterference):
         """
         return _libBornAgainSample.Interference1DLattice_getXi(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(Interference1DLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > Interference1DLattice::getChildren() const override
+        nodeChildren(Interference1DLattice self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > Interference1DLattice::nodeChildren() const override
 
         """
-        return _libBornAgainSample.Interference1DLattice_getChildren(self)
+        return _libBornAgainSample.Interference1DLattice_nodeChildren(self)
 
 # Register Interference1DLattice in _libBornAgainSample:
 _libBornAgainSample.Interference1DLattice_swigregister(Interference1DLattice)
@@ -6847,13 +6847,13 @@ class Interference2DLattice(IInterference):
         """
         return _libBornAgainSample.Interference2DLattice_getParticleDensity(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(Interference2DLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > Interference2DLattice::getChildren() const override
+        nodeChildren(Interference2DLattice self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > Interference2DLattice::nodeChildren() const override
 
         """
-        return _libBornAgainSample.Interference2DLattice_getChildren(self)
+        return _libBornAgainSample.Interference2DLattice_nodeChildren(self)
 
 # Register Interference2DLattice in _libBornAgainSample:
 _libBornAgainSample.Interference2DLattice_swigregister(Interference2DLattice)
@@ -7012,13 +7012,13 @@ class Interference2DParaCrystal(IInterference):
         """
         return _libBornAgainSample.Interference2DParaCrystal_getParticleDensity(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(Interference2DParaCrystal self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > Interference2DParaCrystal::getChildren() const override
+        nodeChildren(Interference2DParaCrystal self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > Interference2DParaCrystal::nodeChildren() const override
 
         """
-        return _libBornAgainSample.Interference2DParaCrystal_getChildren(self)
+        return _libBornAgainSample.Interference2DParaCrystal_nodeChildren(self)
 
     def pdf1(self):
         r"""
@@ -7171,13 +7171,13 @@ class Interference2DSuperLattice(IInterference):
         """
         return _libBornAgainSample.Interference2DSuperLattice_lattice(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(Interference2DSuperLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > Interference2DSuperLattice::getChildren() const override
+        nodeChildren(Interference2DSuperLattice self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > Interference2DSuperLattice::nodeChildren() const override
 
         """
-        return _libBornAgainSample.Interference2DSuperLattice_getChildren(self)
+        return _libBornAgainSample.Interference2DSuperLattice_nodeChildren(self)
 
 # Register Interference2DSuperLattice in _libBornAgainSample:
 _libBornAgainSample.Interference2DSuperLattice_swigregister(Interference2DSuperLattice)
@@ -7250,13 +7250,13 @@ class Interference3DLattice(IInterference):
         """
         return _libBornAgainSample.Interference3DLattice_supportsMultilayer(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(Interference3DLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > Interference3DLattice::getChildren() const override
+        nodeChildren(Interference3DLattice self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > Interference3DLattice::nodeChildren() const override
 
         """
-        return _libBornAgainSample.Interference3DLattice_getChildren(self)
+        return _libBornAgainSample.Interference3DLattice_nodeChildren(self)
 
 # Register Interference3DLattice in _libBornAgainSample:
 _libBornAgainSample.Interference3DLattice_swigregister(Interference3DLattice)
@@ -7367,13 +7367,13 @@ class InterferenceFinite2DLattice(IInterference):
         """
         return _libBornAgainSample.InterferenceFinite2DLattice_getParticleDensity(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(InterferenceFinite2DLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > InterferenceFinite2DLattice::getChildren() const override
+        nodeChildren(InterferenceFinite2DLattice self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > InterferenceFinite2DLattice::nodeChildren() const override
 
         """
-        return _libBornAgainSample.InterferenceFinite2DLattice_getChildren(self)
+        return _libBornAgainSample.InterferenceFinite2DLattice_nodeChildren(self)
 
 # Register InterferenceFinite2DLattice in _libBornAgainSample:
 _libBornAgainSample.InterferenceFinite2DLattice_swigregister(InterferenceFinite2DLattice)
@@ -7462,13 +7462,13 @@ class InterferenceFinite3DLattice(IInterference):
         """
         return _libBornAgainSample.InterferenceFinite3DLattice_supportsMultilayer(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(InterferenceFinite3DLattice self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > InterferenceFinite3DLattice::getChildren() const override
+        nodeChildren(InterferenceFinite3DLattice self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > InterferenceFinite3DLattice::nodeChildren() const override
 
         """
-        return _libBornAgainSample.InterferenceFinite3DLattice_getChildren(self)
+        return _libBornAgainSample.InterferenceFinite3DLattice_nodeChildren(self)
 
 # Register InterferenceFinite3DLattice in _libBornAgainSample:
 _libBornAgainSample.InterferenceFinite3DLattice_swigregister(InterferenceFinite3DLattice)
@@ -7725,13 +7725,13 @@ class InterferenceRadialParaCrystal(IInterference):
         """
         return _libBornAgainSample.InterferenceRadialParaCrystal_dampingLength(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(InterferenceRadialParaCrystal self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > InterferenceRadialParaCrystal::getChildren() const override
+        nodeChildren(InterferenceRadialParaCrystal self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > InterferenceRadialParaCrystal::nodeChildren() const override
 
         """
-        return _libBornAgainSample.InterferenceRadialParaCrystal_getChildren(self)
+        return _libBornAgainSample.InterferenceRadialParaCrystal_nodeChildren(self)
 
     def randomSample(self):
         r"""
@@ -7942,13 +7942,13 @@ class ParticleLayout(ISampleNode):
         """
         return _libBornAgainSample.ParticleLayout_setTotalParticleSurfaceDensity(self, particle_density)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(ParticleLayout self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > ParticleLayout::getChildren() const override
+        nodeChildren(ParticleLayout self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > ParticleLayout::nodeChildren() const override
 
         """
-        return _libBornAgainSample.ParticleLayout_getChildren(self)
+        return _libBornAgainSample.ParticleLayout_nodeChildren(self)
 
     def weight(self):
         r"""
@@ -8208,13 +8208,13 @@ class Layer(ISampleNode):
         """
         return _libBornAgainSample.Layer_layouts(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(Layer self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > Layer::getChildren() const override
+        nodeChildren(Layer self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > Layer::nodeChildren() const override
 
         """
-        return _libBornAgainSample.Layer_getChildren(self)
+        return _libBornAgainSample.Layer_nodeChildren(self)
 
     def setNumberOfSlices(self, n_slices):
         r"""
@@ -8383,13 +8383,13 @@ class MultiLayer(ISampleNode):
         """
         return _libBornAgainSample.MultiLayer_externalField(self)
 
-    def getChildren(self):
+    def nodeChildren(self):
         r"""
-        getChildren(MultiLayer self) -> swig_dummy_type_const_inode_vector
-        std::vector< const INode * > MultiLayer::getChildren() const override
+        nodeChildren(MultiLayer self) -> swig_dummy_type_const_inode_vector
+        std::vector< const INode * > MultiLayer::nodeChildren() const override
 
         """
-        return _libBornAgainSample.MultiLayer_getChildren(self)
+        return _libBornAgainSample.MultiLayer_nodeChildren(self)
 
     def setSampleName(self, name):
         r"""
diff --git a/auto/Wrap/libBornAgainSample_wrap.cpp b/auto/Wrap/libBornAgainSample_wrap.cpp
index 905f7f8ab7f..971d822b913 100644
--- a/auto/Wrap/libBornAgainSample_wrap.cpp
+++ b/auto/Wrap/libBornAgainSample_wrap.cpp
@@ -7756,67 +7756,67 @@ void SwigDirector_ISampleNode::transferToCPP() {
 }
 
 
-std::vector< INode const *, std::allocator< INode const * > > SwigDirector_ISampleNode::getChildren() const {
-  std::vector< INode const *,std::allocator< INode const * > > c_result;
+std::string SwigDirector_ISampleNode::className() const {
+  std::string c_result;
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call ISampleNode.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char *const swig_method_name = "getChildren";
+  const char *const swig_method_name = "className";
   PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject args = PyTuple_New(0);
   swig::SwigVar_PyObject result = PyObject_Call(method, (PyObject *) args, NULL);
 #else
-  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("getChildren");
+  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("className");
   swig::SwigVar_PyObject result = PyObject_CallMethodObjArgs(swig_get_self(), (PyObject *) swig_method_name, NULL);
 #endif
   if (!result) {
     PyObject *error = PyErr_Occurred();
     if (error) {
-      Swig::DirectorMethodException::raise("Error detected when calling 'ISampleNode.getChildren'");
+      Swig::DirectorMethodException::raise("Error detected when calling 'ISampleNode.className'");
     }
   }
-  std::vector< INode const*,std::allocator< INode const * > > *swig_optr = 0;
-  int swig_ores = swig::asptr(result, &swig_optr);
+  std::string *swig_optr = 0;
+  int swig_ores = SWIG_AsPtr_std_string(result, &swig_optr);
   if (!SWIG_IsOK(swig_ores) || !swig_optr) {
-    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::vector< INode const *,std::allocator< INode const * > >""'");
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::string""'");
   }
   c_result = *swig_optr;
   if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
-  return (std::vector< INode const *,std::allocator< INode const * > >) c_result;
+  return (std::string) c_result;
 }
 
 
-std::string SwigDirector_ISampleNode::className() const {
-  std::string c_result;
+std::vector< INode const *, std::allocator< INode const * > > SwigDirector_ISampleNode::nodeChildren() const {
+  std::vector< INode const *,std::allocator< INode const * > > c_result;
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call ISampleNode.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char *const swig_method_name = "className";
+  const char *const swig_method_name = "nodeChildren";
   PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject args = PyTuple_New(0);
   swig::SwigVar_PyObject result = PyObject_Call(method, (PyObject *) args, NULL);
 #else
-  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("className");
+  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("nodeChildren");
   swig::SwigVar_PyObject result = PyObject_CallMethodObjArgs(swig_get_self(), (PyObject *) swig_method_name, NULL);
 #endif
   if (!result) {
     PyObject *error = PyErr_Occurred();
     if (error) {
-      Swig::DirectorMethodException::raise("Error detected when calling 'ISampleNode.className'");
+      Swig::DirectorMethodException::raise("Error detected when calling 'ISampleNode.nodeChildren'");
     }
   }
-  std::string *swig_optr = 0;
-  int swig_ores = SWIG_AsPtr_std_string(result, &swig_optr);
+  std::vector< INode const*,std::allocator< INode const * > > *swig_optr = 0;
+  int swig_ores = swig::asptr(result, &swig_optr);
   if (!SWIG_IsOK(swig_ores) || !swig_optr) {
-    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::string""'");
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::vector< INode const *,std::allocator< INode const * > >""'");
   }
   c_result = *swig_optr;
   if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
-  return (std::string) c_result;
+  return (std::vector< INode const *,std::allocator< INode const * > >) c_result;
 }
 
 
@@ -7930,67 +7930,67 @@ void SwigDirector_IFormFactor::transferToCPP() {
 }
 
 
-std::vector< INode const *, std::allocator< INode const * > > SwigDirector_IFormFactor::getChildren() const {
-  std::vector< INode const *,std::allocator< INode const * > > c_result;
+std::string SwigDirector_IFormFactor::className() const {
+  std::string c_result;
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactor.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char *const swig_method_name = "getChildren";
+  const char *const swig_method_name = "className";
   PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject args = PyTuple_New(0);
   swig::SwigVar_PyObject result = PyObject_Call(method, (PyObject *) args, NULL);
 #else
-  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("getChildren");
+  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("className");
   swig::SwigVar_PyObject result = PyObject_CallMethodObjArgs(swig_get_self(), (PyObject *) swig_method_name, NULL);
 #endif
   if (!result) {
     PyObject *error = PyErr_Occurred();
     if (error) {
-      Swig::DirectorMethodException::raise("Error detected when calling 'IFormFactor.getChildren'");
+      Swig::DirectorMethodException::raise("Error detected when calling 'IFormFactor.className'");
     }
   }
-  std::vector< INode const*,std::allocator< INode const * > > *swig_optr = 0;
-  int swig_ores = swig::asptr(result, &swig_optr);
+  std::string *swig_optr = 0;
+  int swig_ores = SWIG_AsPtr_std_string(result, &swig_optr);
   if (!SWIG_IsOK(swig_ores) || !swig_optr) {
-    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::vector< INode const *,std::allocator< INode const * > >""'");
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::string""'");
   }
   c_result = *swig_optr;
   if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
-  return (std::vector< INode const *,std::allocator< INode const * > >) c_result;
+  return (std::string) c_result;
 }
 
 
-std::string SwigDirector_IFormFactor::className() const {
-  std::string c_result;
+std::vector< INode const *, std::allocator< INode const * > > SwigDirector_IFormFactor::nodeChildren() const {
+  std::vector< INode const *,std::allocator< INode const * > > c_result;
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactor.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char *const swig_method_name = "className";
+  const char *const swig_method_name = "nodeChildren";
   PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject args = PyTuple_New(0);
   swig::SwigVar_PyObject result = PyObject_Call(method, (PyObject *) args, NULL);
 #else
-  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("className");
+  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("nodeChildren");
   swig::SwigVar_PyObject result = PyObject_CallMethodObjArgs(swig_get_self(), (PyObject *) swig_method_name, NULL);
 #endif
   if (!result) {
     PyObject *error = PyErr_Occurred();
     if (error) {
-      Swig::DirectorMethodException::raise("Error detected when calling 'IFormFactor.className'");
+      Swig::DirectorMethodException::raise("Error detected when calling 'IFormFactor.nodeChildren'");
     }
   }
-  std::string *swig_optr = 0;
-  int swig_ores = SWIG_AsPtr_std_string(result, &swig_optr);
+  std::vector< INode const*,std::allocator< INode const * > > *swig_optr = 0;
+  int swig_ores = swig::asptr(result, &swig_optr);
   if (!SWIG_IsOK(swig_ores) || !swig_optr) {
-    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::string""'");
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::vector< INode const *,std::allocator< INode const * > >""'");
   }
   c_result = *swig_optr;
   if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
-  return (std::string) c_result;
+  return (std::vector< INode const *,std::allocator< INode const * > >) c_result;
 }
 
 
@@ -8258,67 +8258,67 @@ void SwigDirector_IBornFF::transferToCPP() {
 }
 
 
-std::vector< INode const *, std::allocator< INode const * > > SwigDirector_IBornFF::getChildren() const {
-  std::vector< INode const *,std::allocator< INode const * > > c_result;
+std::string SwigDirector_IBornFF::className() const {
+  std::string c_result;
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IBornFF.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char *const swig_method_name = "getChildren";
+  const char *const swig_method_name = "className";
   PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject args = PyTuple_New(0);
   swig::SwigVar_PyObject result = PyObject_Call(method, (PyObject *) args, NULL);
 #else
-  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("getChildren");
+  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("className");
   swig::SwigVar_PyObject result = PyObject_CallMethodObjArgs(swig_get_self(), (PyObject *) swig_method_name, NULL);
 #endif
   if (!result) {
     PyObject *error = PyErr_Occurred();
     if (error) {
-      Swig::DirectorMethodException::raise("Error detected when calling 'IBornFF.getChildren'");
+      Swig::DirectorMethodException::raise("Error detected when calling 'IBornFF.className'");
     }
   }
-  std::vector< INode const*,std::allocator< INode const * > > *swig_optr = 0;
-  int swig_ores = swig::asptr(result, &swig_optr);
+  std::string *swig_optr = 0;
+  int swig_ores = SWIG_AsPtr_std_string(result, &swig_optr);
   if (!SWIG_IsOK(swig_ores) || !swig_optr) {
-    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::vector< INode const *,std::allocator< INode const * > >""'");
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::string""'");
   }
   c_result = *swig_optr;
   if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
-  return (std::vector< INode const *,std::allocator< INode const * > >) c_result;
+  return (std::string) c_result;
 }
 
 
-std::string SwigDirector_IBornFF::className() const {
-  std::string c_result;
+std::vector< INode const *, std::allocator< INode const * > > SwigDirector_IBornFF::nodeChildren() const {
+  std::vector< INode const *,std::allocator< INode const * > > c_result;
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IBornFF.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char *const swig_method_name = "className";
+  const char *const swig_method_name = "nodeChildren";
   PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject args = PyTuple_New(0);
   swig::SwigVar_PyObject result = PyObject_Call(method, (PyObject *) args, NULL);
 #else
-  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("className");
+  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("nodeChildren");
   swig::SwigVar_PyObject result = PyObject_CallMethodObjArgs(swig_get_self(), (PyObject *) swig_method_name, NULL);
 #endif
   if (!result) {
     PyObject *error = PyErr_Occurred();
     if (error) {
-      Swig::DirectorMethodException::raise("Error detected when calling 'IBornFF.className'");
+      Swig::DirectorMethodException::raise("Error detected when calling 'IBornFF.nodeChildren'");
     }
   }
-  std::string *swig_optr = 0;
-  int swig_ores = SWIG_AsPtr_std_string(result, &swig_optr);
+  std::vector< INode const*,std::allocator< INode const * > > *swig_optr = 0;
+  int swig_ores = swig::asptr(result, &swig_optr);
   if (!SWIG_IsOK(swig_ores) || !swig_optr) {
-    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::string""'");
+    Swig::DirectorTypeMismatchException::raise(SWIG_ErrorType(SWIG_ArgError((swig_optr ? swig_ores : SWIG_TypeError))), "in output value of type '""std::vector< INode const *,std::allocator< INode const * > >""'");
   }
   c_result = *swig_optr;
   if (SWIG_IsNewObj(swig_ores)) delete swig_optr;
-  return (std::string) c_result;
+  return (std::vector< INode const *,std::allocator< INode const * > >) c_result;
 }
 
 
@@ -43195,7 +43195,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Crystal_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Crystal_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Crystal *arg1 = (Crystal *) 0 ;
   void *argp1 = 0 ;
@@ -43207,10 +43207,10 @@ SWIGINTERN PyObject *_wrap_Crystal_getChildren(PyObject *SWIGUNUSEDPARM(self), P
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Crystal, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Crystal_getChildren" "', argument " "1"" of type '" "Crystal const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Crystal_nodeChildren" "', argument " "1"" of type '" "Crystal const *""'"); 
   }
   arg1 = reinterpret_cast< Crystal * >(argp1);
-  result = ((Crystal const *)arg1)->getChildren();
+  result = ((Crystal const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -43699,7 +43699,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IParticle_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_IParticle_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   IParticle *arg1 = (IParticle *) 0 ;
   void *argp1 = 0 ;
@@ -43711,10 +43711,10 @@ SWIGINTERN PyObject *_wrap_IParticle_getChildren(PyObject *SWIGUNUSEDPARM(self),
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_IParticle, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IParticle_getChildren" "', argument " "1"" of type '" "IParticle const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IParticle_nodeChildren" "', argument " "1"" of type '" "IParticle const *""'"); 
   }
   arg1 = reinterpret_cast< IParticle * >(argp1);
-  result = ((IParticle const *)arg1)->getChildren();
+  result = ((IParticle const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -43914,7 +43914,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_MesoCrystal_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_MesoCrystal_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   MesoCrystal *arg1 = (MesoCrystal *) 0 ;
   void *argp1 = 0 ;
@@ -43926,10 +43926,10 @@ SWIGINTERN PyObject *_wrap_MesoCrystal_getChildren(PyObject *SWIGUNUSEDPARM(self
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_MesoCrystal, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MesoCrystal_getChildren" "', argument " "1"" of type '" "MesoCrystal const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MesoCrystal_nodeChildren" "', argument " "1"" of type '" "MesoCrystal const *""'"); 
   }
   arg1 = reinterpret_cast< MesoCrystal * >(argp1);
-  result = ((MesoCrystal const *)arg1)->getChildren();
+  result = ((MesoCrystal const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -44264,7 +44264,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Particle_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Particle_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Particle *arg1 = (Particle *) 0 ;
   void *argp1 = 0 ;
@@ -44276,10 +44276,10 @@ SWIGINTERN PyObject *_wrap_Particle_getChildren(PyObject *SWIGUNUSEDPARM(self),
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Particle, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Particle_getChildren" "', argument " "1"" of type '" "Particle const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Particle_nodeChildren" "', argument " "1"" of type '" "Particle const *""'"); 
   }
   arg1 = reinterpret_cast< Particle * >(argp1);
-  result = ((Particle const *)arg1)->getChildren();
+  result = ((Particle const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -44720,7 +44720,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ParticleComposition_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_ParticleComposition_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ParticleComposition *arg1 = (ParticleComposition *) 0 ;
   void *argp1 = 0 ;
@@ -44732,10 +44732,10 @@ SWIGINTERN PyObject *_wrap_ParticleComposition_getChildren(PyObject *SWIGUNUSEDP
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ParticleComposition, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ParticleComposition_getChildren" "', argument " "1"" of type '" "ParticleComposition const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ParticleComposition_nodeChildren" "', argument " "1"" of type '" "ParticleComposition const *""'"); 
   }
   arg1 = reinterpret_cast< ParticleComposition * >(argp1);
-  result = ((ParticleComposition const *)arg1)->getChildren();
+  result = ((ParticleComposition const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -45081,7 +45081,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ParticleCoreShell_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_ParticleCoreShell_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ParticleCoreShell *arg1 = (ParticleCoreShell *) 0 ;
   void *argp1 = 0 ;
@@ -45093,10 +45093,10 @@ SWIGINTERN PyObject *_wrap_ParticleCoreShell_getChildren(PyObject *SWIGUNUSEDPAR
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ParticleCoreShell, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ParticleCoreShell_getChildren" "', argument " "1"" of type '" "ParticleCoreShell const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ParticleCoreShell_nodeChildren" "', argument " "1"" of type '" "ParticleCoreShell const *""'"); 
   }
   arg1 = reinterpret_cast< ParticleCoreShell * >(argp1);
-  result = ((ParticleCoreShell const *)arg1)->getChildren();
+  result = ((ParticleCoreShell const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -51494,7 +51494,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Interference1DLattice_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Interference1DLattice_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Interference1DLattice *arg1 = (Interference1DLattice *) 0 ;
   void *argp1 = 0 ;
@@ -51506,10 +51506,10 @@ SWIGINTERN PyObject *_wrap_Interference1DLattice_getChildren(PyObject *SWIGUNUSE
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Interference1DLattice, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Interference1DLattice_getChildren" "', argument " "1"" of type '" "Interference1DLattice const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Interference1DLattice_nodeChildren" "', argument " "1"" of type '" "Interference1DLattice const *""'"); 
   }
   arg1 = reinterpret_cast< Interference1DLattice * >(argp1);
-  result = ((Interference1DLattice const *)arg1)->getChildren();
+  result = ((Interference1DLattice const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -51752,7 +51752,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Interference2DLattice_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Interference2DLattice_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Interference2DLattice *arg1 = (Interference2DLattice *) 0 ;
   void *argp1 = 0 ;
@@ -51764,10 +51764,10 @@ SWIGINTERN PyObject *_wrap_Interference2DLattice_getChildren(PyObject *SWIGUNUSE
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Interference2DLattice, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Interference2DLattice_getChildren" "', argument " "1"" of type '" "Interference2DLattice const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Interference2DLattice_nodeChildren" "', argument " "1"" of type '" "Interference2DLattice const *""'"); 
   }
   arg1 = reinterpret_cast< Interference2DLattice * >(argp1);
-  result = ((Interference2DLattice const *)arg1)->getChildren();
+  result = ((Interference2DLattice const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -52156,7 +52156,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Interference2DParaCrystal_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Interference2DParaCrystal_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Interference2DParaCrystal *arg1 = (Interference2DParaCrystal *) 0 ;
   void *argp1 = 0 ;
@@ -52168,10 +52168,10 @@ SWIGINTERN PyObject *_wrap_Interference2DParaCrystal_getChildren(PyObject *SWIGU
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Interference2DParaCrystal, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Interference2DParaCrystal_getChildren" "', argument " "1"" of type '" "Interference2DParaCrystal const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Interference2DParaCrystal_nodeChildren" "', argument " "1"" of type '" "Interference2DParaCrystal const *""'"); 
   }
   arg1 = reinterpret_cast< Interference2DParaCrystal * >(argp1);
-  result = ((Interference2DParaCrystal const *)arg1)->getChildren();
+  result = ((Interference2DParaCrystal const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -52791,7 +52791,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Interference2DSuperLattice_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Interference2DSuperLattice_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Interference2DSuperLattice *arg1 = (Interference2DSuperLattice *) 0 ;
   void *argp1 = 0 ;
@@ -52803,10 +52803,10 @@ SWIGINTERN PyObject *_wrap_Interference2DSuperLattice_getChildren(PyObject *SWIG
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Interference2DSuperLattice, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Interference2DSuperLattice_getChildren" "', argument " "1"" of type '" "Interference2DSuperLattice const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Interference2DSuperLattice_nodeChildren" "', argument " "1"" of type '" "Interference2DSuperLattice const *""'"); 
   }
   arg1 = reinterpret_cast< Interference2DSuperLattice * >(argp1);
-  result = ((Interference2DSuperLattice const *)arg1)->getChildren();
+  result = ((Interference2DSuperLattice const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -52997,7 +52997,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Interference3DLattice_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Interference3DLattice_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Interference3DLattice *arg1 = (Interference3DLattice *) 0 ;
   void *argp1 = 0 ;
@@ -53009,10 +53009,10 @@ SWIGINTERN PyObject *_wrap_Interference3DLattice_getChildren(PyObject *SWIGUNUSE
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Interference3DLattice, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Interference3DLattice_getChildren" "', argument " "1"" of type '" "Interference3DLattice const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Interference3DLattice_nodeChildren" "', argument " "1"" of type '" "Interference3DLattice const *""'"); 
   }
   arg1 = reinterpret_cast< Interference3DLattice * >(argp1);
-  result = ((Interference3DLattice const *)arg1)->getChildren();
+  result = ((Interference3DLattice const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -53284,7 +53284,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_InterferenceFinite2DLattice_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_InterferenceFinite2DLattice_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   InterferenceFinite2DLattice *arg1 = (InterferenceFinite2DLattice *) 0 ;
   void *argp1 = 0 ;
@@ -53296,10 +53296,10 @@ SWIGINTERN PyObject *_wrap_InterferenceFinite2DLattice_getChildren(PyObject *SWI
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_InterferenceFinite2DLattice, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "InterferenceFinite2DLattice_getChildren" "', argument " "1"" of type '" "InterferenceFinite2DLattice const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "InterferenceFinite2DLattice_nodeChildren" "', argument " "1"" of type '" "InterferenceFinite2DLattice const *""'"); 
   }
   arg1 = reinterpret_cast< InterferenceFinite2DLattice * >(argp1);
-  result = ((InterferenceFinite2DLattice const *)arg1)->getChildren();
+  result = ((InterferenceFinite2DLattice const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -53550,7 +53550,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_InterferenceFinite3DLattice_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_InterferenceFinite3DLattice_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   InterferenceFinite3DLattice *arg1 = (InterferenceFinite3DLattice *) 0 ;
   void *argp1 = 0 ;
@@ -53562,10 +53562,10 @@ SWIGINTERN PyObject *_wrap_InterferenceFinite3DLattice_getChildren(PyObject *SWI
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_InterferenceFinite3DLattice, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "InterferenceFinite3DLattice_getChildren" "', argument " "1"" of type '" "InterferenceFinite3DLattice const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "InterferenceFinite3DLattice_nodeChildren" "', argument " "1"" of type '" "InterferenceFinite3DLattice const *""'"); 
   }
   arg1 = reinterpret_cast< InterferenceFinite3DLattice * >(argp1);
-  result = ((InterferenceFinite3DLattice const *)arg1)->getChildren();
+  result = ((InterferenceFinite3DLattice const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -54234,7 +54234,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_InterferenceRadialParaCrystal_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_InterferenceRadialParaCrystal_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   InterferenceRadialParaCrystal *arg1 = (InterferenceRadialParaCrystal *) 0 ;
   void *argp1 = 0 ;
@@ -54246,10 +54246,10 @@ SWIGINTERN PyObject *_wrap_InterferenceRadialParaCrystal_getChildren(PyObject *S
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_InterferenceRadialParaCrystal, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "InterferenceRadialParaCrystal_getChildren" "', argument " "1"" of type '" "InterferenceRadialParaCrystal const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "InterferenceRadialParaCrystal_nodeChildren" "', argument " "1"" of type '" "InterferenceRadialParaCrystal const *""'"); 
   }
   arg1 = reinterpret_cast< InterferenceRadialParaCrystal * >(argp1);
-  result = ((InterferenceRadialParaCrystal const *)arg1)->getChildren();
+  result = ((InterferenceRadialParaCrystal const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -55129,7 +55129,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ParticleLayout_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_ParticleLayout_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ParticleLayout *arg1 = (ParticleLayout *) 0 ;
   void *argp1 = 0 ;
@@ -55141,10 +55141,10 @@ SWIGINTERN PyObject *_wrap_ParticleLayout_getChildren(PyObject *SWIGUNUSEDPARM(s
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ParticleLayout, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ParticleLayout_getChildren" "', argument " "1"" of type '" "ParticleLayout const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ParticleLayout_nodeChildren" "', argument " "1"" of type '" "ParticleLayout const *""'"); 
   }
   arg1 = reinterpret_cast< ParticleLayout * >(argp1);
-  result = ((ParticleLayout const *)arg1)->getChildren();
+  result = ((ParticleLayout const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -56018,7 +56018,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Layer_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_Layer_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Layer *arg1 = (Layer *) 0 ;
   void *argp1 = 0 ;
@@ -56030,10 +56030,10 @@ SWIGINTERN PyObject *_wrap_Layer_getChildren(PyObject *SWIGUNUSEDPARM(self), PyO
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Layer, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Layer_getChildren" "', argument " "1"" of type '" "Layer const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Layer_nodeChildren" "', argument " "1"" of type '" "Layer const *""'"); 
   }
   arg1 = reinterpret_cast< Layer * >(argp1);
-  result = ((Layer const *)arg1)->getChildren();
+  result = ((Layer const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -56559,7 +56559,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_MultiLayer_getChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_MultiLayer_nodeChildren(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   MultiLayer *arg1 = (MultiLayer *) 0 ;
   void *argp1 = 0 ;
@@ -56571,10 +56571,10 @@ SWIGINTERN PyObject *_wrap_MultiLayer_getChildren(PyObject *SWIGUNUSEDPARM(self)
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_MultiLayer, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_getChildren" "', argument " "1"" of type '" "MultiLayer const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_nodeChildren" "', argument " "1"" of type '" "MultiLayer const *""'"); 
   }
   arg1 = reinterpret_cast< MultiLayer * >(argp1);
-  result = ((MultiLayer const *)arg1)->getChildren();
+  result = ((MultiLayer const *)arg1)->nodeChildren();
   resultobj = swig::from(static_cast< std::vector< INode const*,std::allocator< INode const * > > >(result));
   return resultobj;
 fail:
@@ -69189,9 +69189,9 @@ static PyMethodDef SwigMethods[] = {
 		"Lattice3D Crystal::rotatedLattice(const IRotation *rotation=nullptr) const\n"
 		"\n"
 		""},
-	 { "Crystal_getChildren", _wrap_Crystal_getChildren, METH_O, "\n"
-		"Crystal_getChildren(Crystal self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > Crystal::getChildren() const override\n"
+	 { "Crystal_nodeChildren", _wrap_Crystal_nodeChildren, METH_O, "\n"
+		"Crystal_nodeChildren(Crystal self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > Crystal::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "Crystal_basis", _wrap_Crystal_basis, METH_O, "\n"
@@ -69300,9 +69300,9 @@ static PyMethodDef SwigMethods[] = {
 		"Rotates the particle. \n"
 		"\n"
 		""},
-	 { "IParticle_getChildren", _wrap_IParticle_getChildren, METH_O, "\n"
-		"IParticle_getChildren(IParticle self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > IParticle::getChildren() const override\n"
+	 { "IParticle_nodeChildren", _wrap_IParticle_nodeChildren, METH_O, "\n"
+		"IParticle_nodeChildren(IParticle self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > IParticle::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "IParticle_decompose", _wrap_IParticle_decompose, METH_O, "\n"
@@ -69349,9 +69349,9 @@ static PyMethodDef SwigMethods[] = {
 		"Creates a sliced form factor for this particle. \n"
 		"\n"
 		""},
-	 { "MesoCrystal_getChildren", _wrap_MesoCrystal_getChildren, METH_O, "\n"
-		"MesoCrystal_getChildren(MesoCrystal self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > MesoCrystal::getChildren() const override\n"
+	 { "MesoCrystal_nodeChildren", _wrap_MesoCrystal_nodeChildren, METH_O, "\n"
+		"MesoCrystal_nodeChildren(MesoCrystal self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > MesoCrystal::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "MesoCrystal_outerShape", _wrap_MesoCrystal_outerShape, METH_O, "\n"
@@ -69403,9 +69403,9 @@ static PyMethodDef SwigMethods[] = {
 		"Returns nullptr, unless overwritten to return a specific material. \n"
 		"\n"
 		""},
-	 { "Particle_getChildren", _wrap_Particle_getChildren, METH_O, "\n"
-		"Particle_getChildren(Particle self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > Particle::getChildren() const override\n"
+	 { "Particle_nodeChildren", _wrap_Particle_nodeChildren, METH_O, "\n"
+		"Particle_nodeChildren(Particle self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > Particle::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "Particle_formFactor", _wrap_Particle_formFactor, METH_O, "\n"
@@ -69468,9 +69468,9 @@ static PyMethodDef SwigMethods[] = {
 		"std::vector< const IParticle * > ParticleComposition::particles() const\n"
 		"\n"
 		""},
-	 { "ParticleComposition_getChildren", _wrap_ParticleComposition_getChildren, METH_O, "\n"
-		"ParticleComposition_getChildren(ParticleComposition self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > ParticleComposition::getChildren() const override\n"
+	 { "ParticleComposition_nodeChildren", _wrap_ParticleComposition_nodeChildren, METH_O, "\n"
+		"ParticleComposition_nodeChildren(ParticleComposition self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > ParticleComposition::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "ParticleComposition_decompose", _wrap_ParticleComposition_decompose, METH_O, "\n"
@@ -69528,9 +69528,9 @@ static PyMethodDef SwigMethods[] = {
 		"const Particle * ParticleCoreShell::shellParticle() const\n"
 		"\n"
 		""},
-	 { "ParticleCoreShell_getChildren", _wrap_ParticleCoreShell_getChildren, METH_O, "\n"
-		"ParticleCoreShell_getChildren(ParticleCoreShell self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > ParticleCoreShell::getChildren() const override\n"
+	 { "ParticleCoreShell_nodeChildren", _wrap_ParticleCoreShell_nodeChildren, METH_O, "\n"
+		"ParticleCoreShell_nodeChildren(ParticleCoreShell self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > ParticleCoreShell::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "ParticleCoreShell_swigregister", ParticleCoreShell_swigregister, METH_O, NULL},
@@ -70528,9 +70528,9 @@ static PyMethodDef SwigMethods[] = {
 		"double Interference1DLattice::getXi() const\n"
 		"\n"
 		""},
-	 { "Interference1DLattice_getChildren", _wrap_Interference1DLattice_getChildren, METH_O, "\n"
-		"Interference1DLattice_getChildren(Interference1DLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > Interference1DLattice::getChildren() const override\n"
+	 { "Interference1DLattice_nodeChildren", _wrap_Interference1DLattice_nodeChildren, METH_O, "\n"
+		"Interference1DLattice_nodeChildren(Interference1DLattice self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > Interference1DLattice::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "Interference1DLattice_swigregister", Interference1DLattice_swigregister, METH_O, NULL},
@@ -70592,9 +70592,9 @@ static PyMethodDef SwigMethods[] = {
 		"Returns the particle density associated with this 2d lattice. \n"
 		"\n"
 		""},
-	 { "Interference2DLattice_getChildren", _wrap_Interference2DLattice_getChildren, METH_O, "\n"
-		"Interference2DLattice_getChildren(Interference2DLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > Interference2DLattice::getChildren() const override\n"
+	 { "Interference2DLattice_nodeChildren", _wrap_Interference2DLattice_nodeChildren, METH_O, "\n"
+		"Interference2DLattice_nodeChildren(Interference2DLattice self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > Interference2DLattice::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "Interference2DLattice_swigregister", Interference2DLattice_swigregister, METH_O, NULL},
@@ -70706,9 +70706,9 @@ static PyMethodDef SwigMethods[] = {
 		"If defined by this interference function's parameters, returns the particle density (per area). Otherwise, returns zero or a user-defined value \n"
 		"\n"
 		""},
-	 { "Interference2DParaCrystal_getChildren", _wrap_Interference2DParaCrystal_getChildren, METH_O, "\n"
-		"Interference2DParaCrystal_getChildren(Interference2DParaCrystal self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > Interference2DParaCrystal::getChildren() const override\n"
+	 { "Interference2DParaCrystal_nodeChildren", _wrap_Interference2DParaCrystal_nodeChildren, METH_O, "\n"
+		"Interference2DParaCrystal_nodeChildren(Interference2DParaCrystal self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > Interference2DParaCrystal::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "Interference2DParaCrystal_pdf1", _wrap_Interference2DParaCrystal_pdf1, METH_O, "\n"
@@ -70811,9 +70811,9 @@ static PyMethodDef SwigMethods[] = {
 		"const Lattice2D & Interference2DSuperLattice::lattice() const\n"
 		"\n"
 		""},
-	 { "Interference2DSuperLattice_getChildren", _wrap_Interference2DSuperLattice_getChildren, METH_O, "\n"
-		"Interference2DSuperLattice_getChildren(Interference2DSuperLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > Interference2DSuperLattice::getChildren() const override\n"
+	 { "Interference2DSuperLattice_nodeChildren", _wrap_Interference2DSuperLattice_nodeChildren, METH_O, "\n"
+		"Interference2DSuperLattice_nodeChildren(Interference2DSuperLattice self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > Interference2DSuperLattice::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "Interference2DSuperLattice_swigregister", Interference2DSuperLattice_swigregister, METH_O, NULL},
@@ -70857,9 +70857,9 @@ static PyMethodDef SwigMethods[] = {
 		"Indicates if this interference function can be used with a multilayer (DWBA mode) \n"
 		"\n"
 		""},
-	 { "Interference3DLattice_getChildren", _wrap_Interference3DLattice_getChildren, METH_O, "\n"
-		"Interference3DLattice_getChildren(Interference3DLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > Interference3DLattice::getChildren() const override\n"
+	 { "Interference3DLattice_nodeChildren", _wrap_Interference3DLattice_nodeChildren, METH_O, "\n"
+		"Interference3DLattice_nodeChildren(Interference3DLattice self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > Interference3DLattice::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "Interference3DLattice_swigregister", Interference3DLattice_swigregister, METH_O, NULL},
@@ -70932,9 +70932,9 @@ static PyMethodDef SwigMethods[] = {
 		"Returns the particle density associated with this 2d lattice. \n"
 		"\n"
 		""},
-	 { "InterferenceFinite2DLattice_getChildren", _wrap_InterferenceFinite2DLattice_getChildren, METH_O, "\n"
-		"InterferenceFinite2DLattice_getChildren(InterferenceFinite2DLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > InterferenceFinite2DLattice::getChildren() const override\n"
+	 { "InterferenceFinite2DLattice_nodeChildren", _wrap_InterferenceFinite2DLattice_nodeChildren, METH_O, "\n"
+		"InterferenceFinite2DLattice_nodeChildren(InterferenceFinite2DLattice self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > InterferenceFinite2DLattice::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "InterferenceFinite2DLattice_swigregister", InterferenceFinite2DLattice_swigregister, METH_O, NULL},
@@ -70988,9 +70988,9 @@ static PyMethodDef SwigMethods[] = {
 		"Indicates if this interference function can be used with a multilayer (DWBA mode) \n"
 		"\n"
 		""},
-	 { "InterferenceFinite3DLattice_getChildren", _wrap_InterferenceFinite3DLattice_getChildren, METH_O, "\n"
-		"InterferenceFinite3DLattice_getChildren(InterferenceFinite3DLattice self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > InterferenceFinite3DLattice::getChildren() const override\n"
+	 { "InterferenceFinite3DLattice_nodeChildren", _wrap_InterferenceFinite3DLattice_nodeChildren, METH_O, "\n"
+		"InterferenceFinite3DLattice_nodeChildren(InterferenceFinite3DLattice self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > InterferenceFinite3DLattice::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "InterferenceFinite3DLattice_swigregister", InterferenceFinite3DLattice_swigregister, METH_O, NULL},
@@ -71142,9 +71142,9 @@ static PyMethodDef SwigMethods[] = {
 		"double InterferenceRadialParaCrystal::dampingLength() const\n"
 		"\n"
 		""},
-	 { "InterferenceRadialParaCrystal_getChildren", _wrap_InterferenceRadialParaCrystal_getChildren, METH_O, "\n"
-		"InterferenceRadialParaCrystal_getChildren(InterferenceRadialParaCrystal self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > InterferenceRadialParaCrystal::getChildren() const override\n"
+	 { "InterferenceRadialParaCrystal_nodeChildren", _wrap_InterferenceRadialParaCrystal_nodeChildren, METH_O, "\n"
+		"InterferenceRadialParaCrystal_nodeChildren(InterferenceRadialParaCrystal self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > InterferenceRadialParaCrystal::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "InterferenceRadialParaCrystal_randomSample", _wrap_InterferenceRadialParaCrystal_randomSample, METH_O, "\n"
@@ -71277,9 +71277,9 @@ static PyMethodDef SwigMethods[] = {
 		"number of particles per square nanometer \n"
 		"\n"
 		""},
-	 { "ParticleLayout_getChildren", _wrap_ParticleLayout_getChildren, METH_O, "\n"
-		"ParticleLayout_getChildren(ParticleLayout self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > ParticleLayout::getChildren() const override\n"
+	 { "ParticleLayout_nodeChildren", _wrap_ParticleLayout_nodeChildren, METH_O, "\n"
+		"ParticleLayout_nodeChildren(ParticleLayout self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > ParticleLayout::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "ParticleLayout_weight", _wrap_ParticleLayout_weight, METH_O, "\n"
@@ -71444,9 +71444,9 @@ static PyMethodDef SwigMethods[] = {
 		"std::vector< const ParticleLayout * > Layer::layouts() const\n"
 		"\n"
 		""},
-	 { "Layer_getChildren", _wrap_Layer_getChildren, METH_O, "\n"
-		"Layer_getChildren(Layer self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > Layer::getChildren() const override\n"
+	 { "Layer_nodeChildren", _wrap_Layer_nodeChildren, METH_O, "\n"
+		"Layer_nodeChildren(Layer self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > Layer::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "Layer_setNumberOfSlices", _wrap_Layer_setNumberOfSlices, METH_VARARGS, "\n"
@@ -71554,9 +71554,9 @@ static PyMethodDef SwigMethods[] = {
 		"Returns the external field applied to the multilayer (units: A/m) \n"
 		"\n"
 		""},
-	 { "MultiLayer_getChildren", _wrap_MultiLayer_getChildren, METH_O, "\n"
-		"MultiLayer_getChildren(MultiLayer self) -> swig_dummy_type_const_inode_vector\n"
-		"std::vector< const INode * > MultiLayer::getChildren() const override\n"
+	 { "MultiLayer_nodeChildren", _wrap_MultiLayer_nodeChildren, METH_O, "\n"
+		"MultiLayer_nodeChildren(MultiLayer self) -> swig_dummy_type_const_inode_vector\n"
+		"std::vector< const INode * > MultiLayer::nodeChildren() const override\n"
 		"\n"
 		""},
 	 { "MultiLayer_setSampleName", _wrap_MultiLayer_setSampleName, METH_VARARGS, "\n"
diff --git a/auto/Wrap/libBornAgainSample_wrap.h b/auto/Wrap/libBornAgainSample_wrap.h
index d8d74157535..11f05cf7d4d 100644
--- a/auto/Wrap/libBornAgainSample_wrap.h
+++ b/auto/Wrap/libBornAgainSample_wrap.h
@@ -23,8 +23,8 @@ public:
     virtual ~SwigDirector_ISampleNode();
     virtual ISampleNode *clone() const;
     virtual void transferToCPP();
-    virtual std::vector< INode const *, std::allocator< INode const * > > getChildren() const;
     virtual std::string className() const;
+    virtual std::vector< INode const *, std::allocator< INode const * > > nodeChildren() const;
     virtual Material const *material() const;
 
 /* Internal director utilities */
@@ -70,8 +70,8 @@ public:
     virtual ~SwigDirector_IFormFactor();
     virtual IFormFactor *clone() const;
     virtual void transferToCPP();
-    virtual std::vector< INode const *, std::allocator< INode const * > > getChildren() const;
     virtual std::string className() const;
+    virtual std::vector< INode const *, std::allocator< INode const * > > nodeChildren() const;
     virtual Material const *material() const;
     virtual void setAmbientMaterial(Material const &arg0);
     virtual complex_t theFF(WavevectorInfo const &wavevectors) const;
@@ -122,8 +122,8 @@ public:
     virtual ~SwigDirector_IBornFF();
     virtual IBornFF *clone() const;
     virtual void transferToCPP();
-    virtual std::vector< INode const *, std::allocator< INode const * > > getChildren() const;
     virtual std::string className() const;
+    virtual std::vector< INode const *, std::allocator< INode const * > > nodeChildren() const;
     virtual Material const *material() const;
     virtual void setAmbientMaterial(Material const &arg0);
     virtual complex_t theFF(WavevectorInfo const &wavevectors) const;
-- 
GitLab